网页爬虫 - 【如图】python爬取的html页面和浏览器显示源码的结果不同
高洛峰
高洛峰 2017-04-18 09:31:41
0
4
773
高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回覆(4)
伊谢尔伦

經過實測,結論是 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">
阿神

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

小葫芦

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

巴扎黑

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

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

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板