当我在 Chrome 中单击检查时,如何让 Beautiful soup html 解析器与显示的代码相同?
Posted
技术标签:
【中文标题】当我在 Chrome 中单击检查时,如何让 Beautiful soup html 解析器与显示的代码相同?【英文标题】:How can I get Beautiful soup html parser to be the same code displayed when I click inspect in Chrome? 【发布时间】:2020-05-03 20:53:05 【问题描述】:所以基本上我正在尝试构建一个网络爬虫来查找速卖通网站中产品的评论。但是,当我解析 html 代码时,解析的代码与我在 Chrome 的检查窗口中看到的代码不同。我无法在我解析的代码中找到评论部分。我如何才能完全按照我在检查窗口中看到的那样解析代码?
from bs4 import BeautifulSoup as soup # HTML data structure
from urllib.request import urlopen as uReq # Web client
# URl to web scrap from.
page_url = "https://www.aliexpress.com/item/4000042292255.html?
spm=a2g0o.productlist.0.0.4a253632RWxaLa&algo_pvid=c73bf552-ce47-43f6-9abb-
b4a994eeaa01&algo_expid=c73bf552-ce47-43f6-9abb-b4a994eeaa01-0&btsid=2c594979-4027-410a-a7a4-
7246ce06ade7&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_53"
# opens the connection and downloads html page from url
uClient = uReq(page_url)
# parses html into a soup data structure to traverse html
# as if it were a json data type.
page_soup = soup(uClient.read(), "html.parser")
uClient.close()
【问题讨论】:
如果网站使用 javascript 加载内容,那么您需要使用 Selenium 或类似的可以执行 javascript 的东西。在 SO 上搜索大量相关帖子。 【参考方案1】:它是动态生成的,你可以通过渲染来抓取它。这是一个简化的_scrapy 和 pyppeteer 的例子。
from simplified_html.request_render import RequestRender
req = RequestRender( 'executablePath': '/Applications/chrome.app/Contents/MacOS/Google Chrome')
def callback(html,url,data):
from simplified_scrapy.simplified_doc import SimplifiedDoc
doc = SimplifiedDoc(html)
print (doc.title)
req.get('https://www.aliexpress.com/item/4000042292255.html?spm=a2g0o.productlist.0.0.4a253632RWxaLa&algo_pvid=c73bf552-ce47-43f6-9abb-b4a994eeaa01&algo_expid=c73bf552-ce47-43f6-9abb-b4a994eeaa01-0&btsid=2c594979-4027-410a-a7a4-7246ce06ade7&ws_ab_test=searchweb0_0,searchweb201602_7,searchweb201603_53',callback)
结果:
'tag': 'title', 'html': 'Note 7 pro smartphones 4G LTE celulares 4GB RAM 64GB ROM quad core 13MP camera 18:9 IPS android mobile phones face ID unlocked-in Cellphones from Cellphones & Telecommunications on AliExpress'
你可以得到simplified_scrapy的例子here
【讨论】:
以上是关于当我在 Chrome 中单击检查时,如何让 Beautiful soup html 解析器与显示的代码相同?的主要内容,如果未能解决你的问题,请参考以下文章