我必须从ebay.com抓取数据,我的抓取项是:“汽车的标题”,“制造”,“模型”,“变速器”和“价格”,我已经抓取了所有该项目,但在撰写时“传输”代码向我显示此错误:“ AttributeError:'NoneType'对象没有属性'text',并且没有废除'transmission'项目!。
代码:
import requests
from bs4 import BeautifulSoup
import re
url = 'https://www.ebay.com/b/Cars-Trucks/6001?_fsrp=0&_sacat=6001&LH_BIN=1&LH_ItemCondition=3000%7C1000%7C2500&rt=nc&_stpos=95125&Model%2520Year=2020%7C2019%7C2018%7C2017%7C2016%7C2015'
res = requests.get(url)
soup = BeautifulSoup(res.text, 'html.parser')
ebay_cars = soup.find_all('li', class_='s-item')
for car_info in ebay_cars:
title_div = car_info.find('div', class_='s-item__wrapper clearfix')
title_sub_div = title_div.find('div', class_='s-item__info clearfix')
title_p = title_sub_div.find('span', class_='s-item__price')
title_tag = title_sub_div.find('a', class_='s-item__link')
title_maker = title_sub_div.find('span', class_='s-item__dynamic s-item__dynamicAttributes1')
title_model = title_sub_div.find('span', class_='s-item__dynamic s-item__dynamicAttributes2')
title_trans = title_sub_div.find('span', class_='s-item__dynamic s-item__dynamicAttributes3')
name_of_car = title_tag.text
price_of_car = title_p.text
maker_of_car = title_maker.text
model_of_car = title_model.text
trans_of_car = title_trans.text
答案 0 :(得分:0)
我认为find函数将返回元素列表,并且您不能在列表上使用.text。您可以尝试在查找功能中添加first = True作为参数,或使用列表索引访问所需的元素
edit:抱歉,您意识到您说的是nonetype not list-如果缺少某些内容,您可能需要先尝试在页面上运行javascript。对于需要javascript的小型工作,我建议使用request-html