我正在学习如何在python 3.8中使用BeautifulSoup刮网,遇到了一个无法找到解决方案的问题。
我正试图从这个页面获取每种产品的品牌:
https://www.linio.com.mx/c/computacion/pc-portatil
有68款产品,我只得到了60款,我确信我的剧本没有抓住第一款和最后一款产品,分别是华硕A540和联想Ideapad L340。
这是我的脚本
from urllib.request import urlopen
from bs4 import BeautifulSoup as soup
my_url = 'https://www.linio.com.mx/c/computacion/pc-portatil'
uClient = urlopen(my_url)
page_html = uClient.read()
uClient.close()
soup_page = soup(page_html, 'html.parser')
containers = soup_page.find(id="catalogue-product-container").findAll(True, recursive=False)
for container in containers:
try:
print(container.a.find(itemprop="brand")["content"])
except TypeError:
pass
在我看来,HTML解析器并不完美,有些人也面临着与您类似的问题-Beautiful Soup findAll';我找不到所有的。
我运行了你的代码,却遇到了同样的问题。错误已经发生在"find"one_answers"findAll"方法中——根据第一页,似乎由于某种未知原因,只有赞助的产品没有被提取。
你试过硒吗?根据我的经验,与其他网络抓取库相比,Selenium给我带来的问题更少,也节省了我很多时间。但这只是我的看法