• 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()

     四、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::*')
    可以获取当前节点之后的所有同级节点。这里我们使用*匹配,所以获取了所有后续同级节点
  • 相关阅读:
    JS 实现点击<a> 标签的时候给其换背景
    LeetCode解题思路 (一)
    读书笔记之《操作系统概念》
    读书笔记之《程序员代码面试指南(字符串问题)》
    读书笔记之《程序员代码面试指南(栈和队列)》
    读书笔记之《程序员代码面试指南(数组和矩阵问题)》
    读书笔记之《程序员代码面试指南(位运算及大数据)》
    项目常用功能代码
    读书笔记之《深入理解Java虚拟机》
    读书笔记之《程序员代码面试指南(链表问题)》
  • 原文地址:https://www.cnblogs.com/figo-studypath/p/9340569.html
Copyright © 2020-2023  润新知