使用beautifulsoup刮擦类别和子类别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用beautifulsoup刮擦类别和子类别相关的知识,希望对你有一定的参考价值。
我正在尝试检索网站中的所有类别和子类别。一旦我进入该类别,我就可以使用BeautifulSoup来提取该类别中的每一件产品。但是,我正在为类别的循环而苦苦挣扎。我正在使用它作为测试网站:http://www.shophive.com。
如何遍历每个类别以及网站左侧的子类别?我想提取类别/子类别中的所有产品并显示在我的页面上。
from bs4 import BeautifulSoup
import user_agent
import requests
useragent = user_agent.generate_user_agent(device_type='desktop')
headers = {'User-Agent': useragent}
req = requests.get('http://www.shophive.com/', headers=headers)
html = req.text
soup = BeautifulSoup(html, 'html.parser')
main_category_links = []
for div in soup.find_all('div', class_='parentMenu arrow'):
main_category_links.append(soup.find('a').get('href'))
print(main_category_links)
subcategory_links = []
for link in soup.find_all('a', class_='itemMenuName'):
subcategory_links.append(link.get('href'))
print(subcategory_links)
我会一点一点地为你打破这个。
useragent = user_agent.generate_user_agent(device_type='desktop')
headers = {'User-Agent': useragent}
req = requests.get('http://www.shophive.com/', headers=headers)
html = req.text
这里我们只是发出请求并存储HTML。我使用一个名为“user_agent”的模块来生成要在标题中使用的用户代理,这只是我的偏好。
<div class="parentMenu arrow">
<a href="http://www.shophive.com/year-end-clearance-sale">
<span>New Year's Clearance Sale</span>
</a>
</div>
主要类别的链接是这样存储的,所以为了只提取链接,我们这样做:
main_category_links = []
for div in soup.find_all('div', class_='parentMenu arrow'):
main_category_links.append(soup.find('a').get('href'))
我们迭代soup.find_all('div', class_='parentMenu arrow')
的结果,因为我们想要的链接元素是这些元素的子元素。然后我们将soup.find('a').get('href')
附加到我们的主要类别链接列表中。我们这次使用soup.find
,因为我们只需要一个结果,然后我们得到href的内容。
<a class="itemMenuName level1" href="http://www.shophive.com/apple/mac">
<span>Mac / Macbooks</span>
</a>
子类别是这样存储的,注意这次“a”标签有一个类,这使我们更容易找到它。
subcategory_links = []
for link in soup.find_all('a', class_='itemMenuName'):
subcategory_links.append(link.get('href'))
在这里,我们迭代soup.find_all('a', class_='itemMenuName')
。当您在BeautifulSoup中搜索课程时,您只需搜索课程名称的一部分即可。在这种情况下,这对我们很有帮助,因为类名从itemMenuName level1
到itemMenuName level2
不等。这些元素已经在它们内部具有链接,因此我们只需使用link.get('href')
提取包含URL的href的内容,并将其附加到我们的子类别链接列表中。
以上是关于使用beautifulsoup刮擦类别和子类别的主要内容,如果未能解决你的问题,请参考以下文章
所有产品(类别和子类别产品)都计入 magento 中的类别列表页面