我正试图使用此代码从消费者事务评论网站收集评论。但我不断地出错,特别是在dateElements中
from bs4 import BeautifulSoup
import requests
import pandas as pd
import json
print ('all imported successfuly')
# Initialize an empty dataframe
df = pd.DataFrame()
for x in range(1, 5):
names = []
headers = []
bodies = []
ratings = []
published = []
updated = []
reported = []
link = (f'https://www.consumeraffairs.com/online/allure-beauty-box.html?page={x}')
print (link)
req = requests.get(link)
content = req.content
soup = BeautifulSoup(content, "lhtml" target="_blank">xml")
articles = soup.find_all('div', {'class':'rvw js-rvw'})
for article in articles:
names.append(article.find('strong', attrs={'class': 'rvw-aut__inf-nm'}).text.strip())
try:
bodies.append(article.find('p', attrs={'class':'rvw-bd'}).text.strip())
except:
bodies.append('')
try:
ratings.append(article.find('div', attrs={'class':'stars-rtg stars-rtg--sm'}).text.strip())
except:
ratings.append('')
dateElements = article.find('span', attrs={'class':'ca-txt-cpt'}).text.strip()
jsonData = json.loads(dateElements)
published.append(jsonData['publishedDate'])
updated.append(jsonData['updatedDate'])
reported.append(jsonData['reportedDate'])
# Create your temporary dataframe of the first iteration, then append that into your "final" dataframe
temp_df = pd.DataFrame({'User Name': names, 'Body': bodies, 'Rating': ratings, 'Published Date': published, 'Updated Date':updated, 'Reported Date':reported})
df = df.append(temp_df, sort=False).reset_index(drop=True)
print ('pass1')
df.to_csv('AllureReviews.csv', index=False, encoding='utf-8')
print ('excel done')
这就是我得到的错误
回溯(最后一次调用):文件“C:/Users/Sara Jitkresorn/PycharmProjects/untitled/venv/caffirs.py”,第37行,jsonData=json。加载(dateElements)文件“C:\Users\Sara-Jitkresorn\AppData\Local\Programs\Python\Python37\lib\json\u_init\u_.py”,第348行,在加载返回\u默认\u解码器中。解码文件“C:\Users\Sara Jitkresorn\AppData\Local\Programs\Python\Python37\lib\json\decoder.py”,第337行,在decode obj中,end=self。raw_decode(s,idx=_w(s,0).end())文件“C:\Users\Sara Jitkresorn\AppData\Local\Programs\Python\Python37\lib\json\decoder.py”,第355行,在raw_decode中从None json中引发JSONDECODEROR(“期望值”,s,err.value)。解码器。JSONDecodeError:应为值:第1行第1列(字符0)
dateElements
不包含可由json解析的字符串。loads()
因为它只是一个文本字符串,例如原始评论:2020年2月15日
更改这些行以绕过此:
try:
ratings.append(article.find('div', attrs={'class':'stars-rtg stars-rtg--sm'}).text.strip())
except:
ratings.append('')
dateElements = article.find('span', attrs={'class':'ca-txt-cpt'}).text.strip()
published.append(dateElements)
temp_df = pd.DataFrame({'User Name': names, 'Body': bodies, 'Rating': ratings, 'Published Date': published})
df = df.append(temp_df, sort=False).reset_index(drop=True)
您还必须注释掉这两行:
# updated = []
# reported = []
您的代码运行时不会出现错误,尽管您仍然无法获得Body
和Rating
的数据。
df
打印出来到这里:
User Name Body Rating Published Date
0 M. M. of Dallas, GA Original review: Feb. 15, 2020
1 Malinda of Aston, PA Original review: Sept. 21, 2019
2 Ping of Tarzana, CA Original review: July 18, 2019
除上述代码外,我们还可以获得评级和非重复数据,如下所示:-
from bs4 import BeautifulSoup
import requests
import pandas as pd
print ('all imported successfuly')
# Initialize an empty dataframe
df = pd.DataFrame()
for x in range(1, 5):
names = []
headers = []
bodies = []
ratings = []
published = []
updated = []
reported = []
dateElements = []
link = (f'https://www.consumeraffairs.com/online/allure-beauty-box.html?page={x}')
print (link)
req = requests.get(link)
content = req.content
soup = BeautifulSoup(content, "lxml")
articles = soup.find_all('div', {'class':'rvw js-rvw'})
for article in articles:
names.append(article.find('strong', attrs={'class': 'rvw-aut__inf-nm'}).text.strip())
try:
bodies.append(article.find('div', attrs={'class':'rvw-bd'}).text.strip())
except:
bodies.append('NA')
try:
ratings.append(article.find('meta', attrs={'itemprop': 'ratingValue'})['content'])
except:
ratings.append('NA')
dateElements.append(article.find('span', attrs={'class':'ca-txt-cpt'}).text.strip())
# Create your temporary dataframe of the first iteration, then append that into your "final" dataframe
temp_df = pd.DataFrame({'User Name': names, 'Body': bodies, 'Rating': ratings, 'Published Date': dateElements})
df = df.append(temp_df, sort=False).reset_index(drop=True)
print ('df')
我写了这段代码来从Flipkart的手机类别中抓取数据。我面临的问题是当元素在那里时会出现属性错误(“属性错误:'NoneType'对象没有属性'text'”)。我如何修改此代码才能工作。如果有元素,我需要将数据填充为“不可用”。请参阅下面的代码。我是编程初学者,任何帮助都将不胜感激。 ''' 导入请求 从bs4导入BeautifulSoup 导入csv 进口再 base_url=”https:/
本文向大家介绍Python urllib、urllib2、httplib抓取网页代码实例,包括了Python urllib、urllib2、httplib抓取网页代码实例的使用技巧和注意事项,需要的朋友参考一下 使用urllib2,太强大了 试了下用代理登陆拉取cookie,跳转抓图片...... 文档:http://docs.python.org/library/urllib2.html 直接上
我是python新手,正在尝试从以下站点获取数据。虽然这段代码适用于不同的站点,但我无法让它适用于nextgen stats。有人想知道为什么吗?下面是我的代码和我得到的错误 下面是我得到的错误 df11=pd。读取html(urlwk1)回溯(上次调用):文件“”,第1行,在文件“C:\Users\USERX\AppData\Local\Packages\PythonSoftwareFounda
这是我第一次尝试编码,所以请原谅我的粗鲁。我试图通过以下链接来学习网页刮刮:https://data.gov.sg/dataset/industrial-arbitry-court-arwards-by-nature-of-trade-distrates?view_id=d3e444ef-54ed-4d0b-b715-1ee465f6d882&resource_id=c24d0d00-2d12-4
问题内容: 我想在PHP中检索链接(网页)的HTML代码。例如,如果链接是 那么我要提供该页面的HTML代码。我想检索此HTML代码并将其存储在PHP变量中。 我怎样才能做到这一点? 问题答案: 如果您的PHP服务器允许使用url fopen包装器,则最简单的方法是: 如果需要更多控制,则应查看cURL函数:
我得到这个错误: 命令:delete Number:1 java。sql。SQLException:未绑定到语句的值 我该怎么解决这个问题?是我漏掉了什么还是语法错了? Java 这应该只是从列表中删除了任务。