python爬虫笔记

一、requests

import requests
headers = {
    'Cookie': 'q_c1=31653b264a074fc9a57816d1ea93ed8b|1474273938000|1474273938000; d_c0="AGDAs254kAqPTr6NW1U3XTLFzKhMPQ6H_nc=|1474273938"; __utmv=51854390.100-1|2=registration_date=20130902=1^3=entry_date=20130902=1;a_t="2.0AACAfbwdAAAXAAAAso0QWAAAgH28HQAAAGDAs254kAoXAAAAYQJVTQ4FCVgA360us8BAklzLYNEHUd6kmHtRQX5a6hiZxKCynnycerLQ3gIkoJLOCQ==";z_c0=Mi4wQUFDQWZid2RBQUFBWU1DemJuaVFDaGNBQUFCaEFsVk5EZ1VKV0FEZnJTNnp3RUNTWE10ZzBRZFIzcVNZZTFGQmZn|1474887858|64b4d4234a21de774c42c837fe0b672fdb5763b0',
    'Host': 'www.zhihu.com',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36',
}
proxies = {
  "http": "http://10.10.1.10:3128",
  "https": "http://10.10.1.10:1080",
}
r = requests.get(url, headers=headers,proxies=proxies)
r.status_code
r.text
r.cookies
r.content

 二、pyquery

from pyquery import PyQuery as pq
import requests
doc = pq(requests.get('http://cuiqingcai.com').text)

doc('#container .list li')
doc('.list').find('li')--子孙
doc('.list').children('.active')--子
doc('.list').parent()--父
doc('.list').parents()--祖先
doc('.list').siblings('.active')--兄弟
--如需遍历
doc('.list').items()
doc('.list').attr('href')--提取属性
doc('.list').attr.href

三、Selenium

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

browser = webdriver.Chrome()
try:
    browser.add_cookie({'name': 'name', 'domain': 'www.zhihu.com', 'value': 'germey'})
    browser.get('https://www.baidu.com')
    input = browser.find_element_by_id('kw')
    input.send_keys('Python')
    input.send_keys(Keys.ENTER)
    wait = WebDriverWait(browser, 10)
    wait.until(EC.presence_of_element_located((By.ID, 'content_left')))
    print(browser.current_url)
    print(browser.get_cookies())
    print(browser.page_source)
finally:
    browser.close()

# 不加载图片
# driver文件放在系统路径,或者在调用时注明
chrome_opt= webdriver.ChromeOptions()
prefs = {"profile.managed_default_content_settings.images":2}
chrome_opt.add_experimental_option("prefs", prefs)
br = webdriver.Chrome(options=chrome_opt)
br.get('https://www.ifeng.com/')


 四、xpath

##引用自https://cuiqingcai.com/5545.html

nodename   选取此节点的所有子节点

/  从当前节点选取直接子节点

//  从当前节点选取子孙节点

| 逻辑或

.  选取当前节点

..  选取当前节点的父节点

@  选取属性

from lxml import etree
html = etree.HTML(text)
result = html.xpath('//li[@class="item-0"]/text()')
result = html.xpath('//li/a/@href')
result = html.xpath('//li[contains(@class, "li")]/a/text()')
result = html.xpath('//li[contains(@class, "li") and @name="item"]/a/text()')

result = html.xpath('//li[1]/a/text()')
result = html.xpath('//li[last()]/a/text()')
result = html.xpath('//li[position()<3]/a/text()')
result = html.xpath('//li[last()-2]/a/text()')


result = html.xpath('//li[1]/ancestor::*')
调用了ancestor轴,可以获取所有祖先节点。其后需要跟两个冒号,然后是节点的选择器,这里我们直接使用*,表示匹配所有节点
result = html.xpath('//li[1]/ancestor::div')
得到的结果就只有div这个祖先节点了
result = html.xpath('//li[1]/attribute::*')
可以获取所有属性值,其后跟的选择器还是*,这代表获取节点的所有属性,返回值就是li节点的所有属性值
result = html.xpath('//li[1]/child::a[@href="link1.html"]')
可以获取所有直接子节点。这里我们又加了限定条件,选取href属性为link1.html的a节点
result = html.xpath('//li[1]/descendant::span')
可以获取所有子孙节点。这里我们又加了限定条件获取span节点,所以返回的结果只包含span节点而不包含a节点
result = html.xpath('//li[1]/following::*[2]')
可以获取当前节点之后的所有节点。这里我们虽然使用的是*匹配,但又加了索引选择,所以只获取了第二个后续节点
result = html.xpath('//li[1]/following-sibling::*')
可以获取当前节点之后的所有同级节点。这里我们使用*匹配,所以获取了所有后续同级节点

 

posted @ 2018-07-20 11:32  figo1421  阅读(204)  评论(0编辑  收藏  举报