Python爬蟲學習一

這幾天發(fā)現(xiàn)一個比較適合Python爬蟲初學者的網站,我是跟著里邊的kingname老師學習,這就當作是一個學習筆記里,有人想去聽老師講課,可以點這里

單線程爬蟲

如何偽裝成瀏覽器呢?

import request
header = {'User-Agent':"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36"}
html = request.get(url, header = header)
html.encoding = 'utf-8'

在get或者post的時候加入User-Agent可以偽裝成瀏覽器。至于怎么獲得User-Agentchrome->F12->Network->隨便點一個接收的信息->Headers->Request Headers

解析HTML,獲取有用信息

  1. 正則表達式
    比較笨的辦法。適用于網頁簡單,正則特別好寫的情況,不用安裝別的庫了。
  2. 利用DOM解析HTML
    BeautifulSoup,request啊什么的都提供了一些功能強大的DOM解析方法,便于使用。
  3. 利用XPath解析HTML
    這其實也是DOM解析的一種吧?但是在爬一些比較復雜的網頁時候,特別好用。
XPATH

怎么使用XPath?

    from lxml import etree
    selector = etree.HTML(html)
    selector.xpath('XPATH')

XPath怎么寫?

    //     :根節(jié)點
    /      :往下層尋找
    /text():提取文本內容
    /@attr :提取屬性內容

  #提取div的id為first_div的文字內容  
  selector.xpath('//div[@id="first_div"]/text()')
  
  #提取a標簽的href屬性
  selector.xpath('//a/@href')

多線程爬蟲

雖然Python有GIL,但是多線程還是可以在一定程度上提升爬取的速度。

  from multiprocessing.dummy import Pool as ThreadPool
  pools = ThreadPool(__max_core_num__)
  results = pools.map(Spider_function, target_urls)
  pools.join()
  pools.close()

map(func, seq)函數(shù)是Python內置函數(shù),用來接收seq內元素依此執(zhí)行func后返回的值。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 其實node.js也可以做爬蟲,相信前端的同學已經有所了解,但今天我們要講的是如何用python,python實現(xiàn)...
    我是上帝可愛多閱讀 362評論 0 3
  • 課程目標 爬取百度百科Python詞條相關多個頁面的詞條和簡述 并將數(shù)據(jù)以表格的形式保存成html 程序包含五個模...
    牽絲籠海閱讀 467評論 0 2
  • 1 前言 作為一名合格的數(shù)據(jù)分析師,其完整的技術知識體系必須貫穿數(shù)據(jù)獲取、數(shù)據(jù)存儲、數(shù)據(jù)提取、數(shù)據(jù)分析、數(shù)據(jù)挖掘、...
    whenif閱讀 18,107評論 45 523
  • 我小時候的愿望是當一名記者,多少有點匹夫有責的志向。后來我愛上了李志,沒錯,就是那個金壇李志。我聽著“我們生...
    小獅子被注冊了閱讀 400評論 0 1
  • 文/邱焰 他把黑色的咖啡灌入肚中,這已經是今天他喝下的第五杯了。輕輕揉了揉額頭,纖長好看的手指又繼續(xù)握著筆,手背上...
    NEKO邱焰閱讀 301評論 0 0