拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
經過實測,結論是 bs4 改變了屬性的順序。
評論元素 查看網頁原始碼
評論元素
查看網頁原始碼
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 那行程式碼!
經過實測,結論是 bs4 改變了屬性的順序。
1、在瀏覽器中右鍵點擊頁面,選:
2、在 python3 程式中對比:
結果:
class和id順序不一樣而已,
你用chrome和firefox查看同一個網頁原始碼,順序也是不一樣的.
建議題主把網站甚至自己的程式碼貼出來,方便大家幫你調試。不一樣很正常,如果你爬蟲爬下來的內容保存為靜態頁面,和你用瀏覽器看到的不一樣,那麼肯定是對對方反爬蟲機制給識別了,所以伺服器會返回不同的資訊。辨識爬蟲的方法很多,題主如果還有疑惑歡迎再問
樓主建議你貼出全部原始碼,因為網站可以辨識你是人工瀏覽器操作還是爬蟲。
目前程式碼來看,建議你增加頭部資訊! use-agent 那行程式碼!