我是一个新手,尝试通过bs4来抓取该网站,方法是从指定的div收集href,然后通过href导航产品页面并收集数据,但是我仍然坚持收集href。 如果有人帮助我,我将非常高兴:
import urllib.request
from bs4 import BeautifulSoup
urlpage = 'https://www.digikala.com/search/category-tire/'
print(urlpage)
# scrape the webpage using beautifulsoup
# query the website and return the html to the variable 'page'
page = urllib.request.urlopen(urlpage)
# parse the html using beautiful soup and store in variable 'soup'
soup = BeautifulSoup(page, 'html.parser')
# find product items
results = soup.find_all('div', attrs={'class': 'c-product-box__title'})
print('BeautifulSoup - Number of results', len(results))
这是第一个结果,尽管当您打印结果时将有36个div,我只是复制了第一个,我尽力不问并找到答案,但我什至没有接近,所以我很简单,很抱歉。
<div class="c-product-box__title"><a href="/product/dkp-539563/لاستیک-خودرو-میشلن-مدل-primacy-3-سایز-20555r16-دو-حلقه" target="_blank">لاستیک خودرو میشلن مدل Primacy 3 سایز 205/55R16 - دو حلقه</a></div>
答案 0 :(得分:2)
# -*- coding: utf-8 -*-
html_doc = '<div class="c-product-box__title"><a href="/product/dkp-539563/ﻼﺴﺗیک-ﺥﻭﺩﺭﻭ-ﻡیﺶﻠﻧ-ﻡﺪﻟ-primacy-3-ﺱﺍیﺯ-20555r16-ﺩﻭ-ﺢﻠﻘﻫ" target="_blank">ﻼﺴﺗیک ﺥﻭﺩﺭﻭ ﻡیﺶﻠﻧ ﻡﺪﻟ Primacy 3 ﺱﺍیﺯ 205/55R16 - ﺩﻭ ﺢﻠﻘﻫ</a></div>"'
from bs4 import BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
for div in soup.find_all('div', class_='c-product-box__title'):
print div.a['href']
输出:
$ python a.py
/product/dkp-539563/لاستیک-خودرو-میشلن-مدل-primacy-3-سایز-20555r16-دو-حلقه
请参见https://www.crummy.com/software/BeautifulSoup/bs4/doc/#beautiful-soup-documentation。
答案 1 :(得分:0)
对于每个结果div
,首先获取子元素a
,然后获取其href
属性的值,如下所示:
results = soup.find_all('div', attrs={'class': 'c-product-box__title'})
print('BeautifulSoup - Number of results', len(results))
links = []
for result in results:
links.append(result.a['href'])
print(links)
这将显示36个链接的列表。这是前2个示例:
['/product/dkp-539563/لاستیک-خودرو-میشلن-مدل-primacy-3-سایز-20555r16-دو-حلقه',
'/product/dkp-959932/لاستیک-خودرو-گلدستون-مدل-2020-2000-سایز-1856514-دو-حلقه-مناسب-برای-انواع-رینگ-14',
答案 2 :(得分:0)
您可以将类和类型选择器与子组合器结合使用,以获取div的子a
标签(通过类选择器指定div)。在这种情况下,有36个,因此无需限制返回的孩子。
import requests
from bs4 import BeautifulSoup
url = 'https://www.digikala.com/search/category-tire/'
r = requests.get(url)
soup = BeautifulSoup(r.content,"lxml")
links = [link['href'] for link in soup.select('.c-product-box__title > a')]
print(len(links))
print(links[0])