搜尋

首頁  >  問答  >  主體

网页爬虫 - 【如图】python爬取的html页面和浏览器显示源码的结果不同

高洛峰高洛峰2893 天前789

全部回覆(4)我來回復

  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:33:41

    經過實測,結論是 bs4 改變了屬性的順序。

    1、在瀏覽器中右鍵點擊頁面,選:

    評論元素

    查看網頁原始碼

    2、在 python3 程式中對比:

    import re
    ptn_tr = re.compile(r'<tr[^>]+>')
    
    import requests as req
    rsp=req.get('http://www.pythonscraping.com/pages/page3.html')
    html = rsp.text
    print('requests:\t', ptn_tr.findall(html)[0])
    
    from urllib.request import urlopen
    rsp = urlopen("http://www.pythonscraping.com/pages/page3.html")
    html = rsp.read().decode()
    print('urlopen:\t', ptn_tr.findall(html)[0])
    
    from bs4 import BeautifulSoup
    html = str(BeautifulSoup(html,"lxml"))
    print('bs4Soup:\t', ptn_tr.findall(html)[0])
    

    結果:

    requests:     <tr id="gift1" class="gift">
    urlopen:     <tr id="gift1" class="gift">
    bs4Soup:     <tr class="gift" id="gift1">

    回覆
    0
  • 阿神

    阿神2017-04-18 09:33:41

    class和id順序不一樣而已,
    你用chrome和firefox查看同一個網頁原始碼,順序也是不一樣的.

    回覆
    0
  • 高洛峰

    高洛峰2017-04-18 09:33:41

    建議題主把網站甚至自己的程式碼貼出來,方便大家幫你調試。不一樣很正常,如果你爬蟲爬下來的內容保存為靜態頁面,和你用瀏覽器看到的不一樣,那麼肯定是對對方反爬蟲機制給識別了,所以伺服器會返回不同的資訊。辨識爬蟲的方法很多,題主如果還有疑惑歡迎再問

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:33:41

    樓主建議你貼出全部原始碼,因為網站可以辨識你是人工瀏覽器操作還是爬蟲。

    目前程式碼來看,建議你增加頭部資訊! use-agent 那行程式碼!

    回覆
    0
  • 取消回覆