我写了这段代码来从Flipkart的手机类别中抓取数据。我面临的问题是当元素在那里时会出现属性错误(“属性错误:'NoneType'对象没有属性'text'”)。我如何修改此代码才能工作。如果有元素,我需要将数据填充为“不可用”。请参阅下面的代码。我是编程初学者,任何帮助都将不胜感激。
'''
导入请求
从bs4导入BeautifulSoup
导入csv
进口再
base_url=”https://www.flipkart.com/search?q=mobiles
定义get_urls():以开放(“翻转数据.csv”,“a”)为csv_file:
writer = csv.writer(csv_file)
writer.writerow(
['Product_name', 'Price', 'Rating', 'Product-url'])
for page in range(1, 510):
page = base_url + str(page)
response = requests.get(page).text
soup = BeautifulSoup(response, 'lxml')
for product_urls in soup.find_all('a', href=True, attrs={'class': '_1fQZEK'}):
name = product_urls.find('div', attrs={'class': '_4rR01T'}).text
price = product_urls.find('div', attrs={'class': '_30jeq3 _1_WHN1'}).text
price = re.split("\₹", price)
price = price[-1]
rating = product_urls.find('div', attrs={'class': '_3LWZlK'}).text
item_url = soup.find('a', class_="_1fQZEK", target="_blank")['href']
item_url = " https://www.flipkart.com" + item_url
item_url = re.split("\&", item_url)
item_url = item_url[0]
print(f'Product name is {name}')
print(f'Product price is {price}')
print(f'Product rating is {rating}')
print(f'Product url is {item_url}')
writer.writerow(
[name, price, rating, item_url])
get_urls()
'''
看起来您可能会尝试使用try/catch
异常处理包围字符串,如果有这样的属性错误,并使用除外
块将字符串设置为“不可用”当有异常时。
import requests
from bs4 import BeautifulSoup
import csv
import re
base_url = "https://www.flipkart.com/search?q=mobiles&page="
def get_urls():
csv_file = open("fliplart-data.csv", "a")
writer = csv.writer(csv_file)
writer.writerow(
['Product_name', 'Price', 'Rating', 'Product-url'])
for page in range(1, 510):
page = base_url + str(page)
response = requests.get(page).text
soup = BeautifulSoup(response, 'lxml')
for product_urls in soup.find_all('a', href=True, attrs={'class': '_1fQZEK'}):
#name
try:
name = product_urls.find('div', attrs={'class': '_4rR01T'}).text
except Exception as e:
name = "Not Available"
#price
try:
price = product_urls.find('div', attrs={'class': '_30jeq3 _1_WHN1'}).text
price = re.split("\₹", price)
price = price[-1]
except Exception as e:
price = "Not Available"
#rating
try:
rating = product_urls.find('div', attrs={'class': '_3LWZlK'}).text
except Exception as e:
rating = "Not Available"
#item_url
try:
item_url = soup.find('a', class_="_1fQZEK", target="_blank")['href']
item_url = " https://www.flipkart.com" + item_url
item_url = re.split("\&", item_url)
item_url = item_url[0]
except Exception as e:
item_url = "Not Available"
print(f'Product name is {name}')
print(f'Product price is {price}')
print(f'Product rating is {rating}')
print(f'Product url is {item_url}')
writer.writerow(
[name, price, rating, item_url])
get_urls()
输出
Product name is intaek 5616
Product price is 789
Product rating is Not Available
Product url is https://www.flipkart.com/kxd-m1/p/itm89bbc238d6356?pid=MOBFUXKG3DYVZRQV
从抓取结果来看,实际数据与它所说的URL不匹配。这可能也是您遇到的问题的一部分。
我是python新手,正在尝试从以下站点获取数据。虽然这段代码适用于不同的站点,但我无法让它适用于nextgen stats。有人想知道为什么吗?下面是我的代码和我得到的错误 下面是我得到的错误 df11=pd。读取html(urlwk1)回溯(上次调用):文件“”,第1行,在文件“C:\Users\USERX\AppData\Local\Packages\PythonSoftwareFounda
我正试图使用此代码从消费者事务评论网站收集评论。但我不断地出错,特别是在dateElements中 这就是我得到的错误 回溯(最后一次调用):文件“C:/Users/Sara Jitkresorn/PycharmProjects/untitled/venv/caffirs.py”,第37行,jsonData=json。加载(dateElements)文件“C:\Users\Sara-Jitkres
我正在尝试使用preg_match当前只检索1个值(在我开始检索多个值之前),但是,我没有运气。执行print_r()时,数组中没有存储任何内容。 以下是我目前正在尝试的代码: 所需输出: 我的上述代码不起作用。在这方面的任何帮助都将不胜感激。提前感谢。
问题内容: 我正在尝试开发一个简单的网页抓取工具。我想提取没有代码的文本。我实现了这个目标,但是我发现在某些加载了的页面中,我没有获得良好的结果。 例如,如果一些代码添加了一些文本,则看不到它,因为当我调用 我得到的原始文本没有添加文本(因为在客户端执行了)。 因此,我正在寻找一些解决此问题的想法。 问题答案: 一旦安装了,请确保二进制文件在当前路径中可用: 例 举个例子,我用以下HTML代码创建
我正在尝试使用Selenium从页面中提取数据。我上周做了,但这周有些变化,现在它不再工作了。问题是“显示更多”按钮,或者你们可以在网站上看到的“Prikaži broj”。我有多个页面要刮,但让我们集中在一个。 代码是: 上周它和xpath一起工作,但现在不行了。我甚至找到了一个按钮,但它没有点击:
image元素 alt属性,src属性 complete属性 height属性,width属性 naturalWidth属性,naturalHeight属性 audio元素,video元素 image元素 alt属性,src属性 alt属性返回image元素的HTML标签的alt属性值,src属性返回image元素的HTML标签的src属性值。 // 方法一:HTML5构造函数Image var