繁体   English   中英

web 刮擦 BeautifulSoup python

[英]web scraping by BeautifulSoup python

我正在尝试通过BeautifulSoup刮取在线商店的产品,但我有一个问题,我只能刮取一种产品,但我想刮取所有产品。

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
first_watch = result[0]
first_name = first_watch.a.text
first_rate = first_watch.find(class_='c-product-box__rate-comparision--rate-people')
first_price = first_watch.find(class_='c-price__value-wrapper')
first_rate = first_rate.text
first_price = first_price.text

一旦我使用first_watch = result并使用find_all显示此错误:

回溯(最后一次调用):文件“C:/Users/Oogway/PycharmProjects/web_scraping1/web_s.py”,第 8 行,在 first_name = first_watch.a.text 文件“C:\Users\Oogway.virtualenvs\web_scraping1\ lib\site-packages\bs4\element.py",第 2160 行,in__getattr__ raise AttributeError( AttributeError: ResultSet object 没有属性 'a'。您可能将元素列表视为单个元素。您调用 find_all( ) 当你打算调用 find() 时?

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
first_watch = result
first_name = first_watch.a.text
first_rate = first_watch.find_all(class_='c-product-box__rate-comparision--rate-people')
first_price = first_watch.find_all(class_='c-price__value-wrapper')
first_rate = first_rate.text
first_price = first_price.text

您需要迭代result object。

import requests
from bs4 import BeautifulSoup
res = requests.get('https://www.digikala.com/search/category-wearable-gadget/')
soup = BeautifulSoup(res.text, 'html.parser')
result = soup.find_all('div', class_='c-product-box__content')
for itm in result:
    print(itm.a.text)

find_all方法将返回所有带有 class c-product-box__contentdiv

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM