1. 程式人生 > 其它 >Python 爬蟲工具

Python 爬蟲工具

  • requests

    $ pip install requests
    
    import requests
    
    kw = {'wd':'長城'}
    
    headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
    
    formdata = {
        "type":"AUTO",
        "i":"i love python",
        "doctype":"json",
        "xmlVersion":"1.8",
        "keyfrom":"fanyi.web",
        "ue":"UTF-8",
        "action":"FY_BY_ENTER",
        "typoResult":"true"
    }
    
    url = "http://www.baidu.com/s?"
    
    # params 接收一個字典或者字串的查詢引數,字典型別自動轉換為url編碼,不需要urlencode()
    resp = requests.get(url, params = kw, headers = headers)
    resp = requests.post(url, data = fordata)
    
    # 編碼方式
    resp.encoding = 'utf-8'
    
    # 檢視響應內容,response.text 返回的是Unicode格式的資料
    print response.text
    
    # 檢視響應內容,response.content返回的位元組流資料
    print respones.content
    
    
    
  • re 正則表示式

    import re
    
    # re.compile 預編譯正則表示式
    # .*? 匹配任意長度字串   (?P<name>.*?) name為變數名,用於提取匹配內容
    # re.S 匹配包括換行符在內的任意字元
    obj = re.compile(r'<li>.*?<span class="title">(?P<name>.*?)</span>',re.S)
    
    # obj.search 搜尋符合正則規則的字串  group("pic_url")返回一個包含"pic_url"的元組
    result = obj.search(resp.text).group("pic_url")
    
    #字串中找到正則表示式所匹配的所有子串,並把它們作為一個迭代器返回
    re.finditer(pattern, string, flags=0)
    
    
  • xpath 查詢HTML標籤

    $ pip3 install lxml
    
    from lxml import etree
    
    # resp.text 網頁文字
    et = etree.HTML(resp.text)
    
    # 查詢<ul>標籤 含有class='pic' 的文字內容
    result = et.xpath("//ul[@class='pic']/text()")
    
    # 查詢<a>標籤 包含的連結
    result = et.xpath("//a/@href")
    
    
  • 執行緒池

    from concurrent.futures import ThreadPoolExecutor
    
    # 最多 10 執行緒 
    with ThreadPoolExecutor(10) as t:
        t.submit(func,arge)