Python 避免在浏览页面时复制某些内容
我在保存我正在刮取的结果时遇到了一些困难。 请参考此代码(针对我的具体案例,此代码略有更改): 创建数据帧Python 避免在浏览页面时复制某些内容,python,web-scraping,beautifulsoup,web-crawler,Python,Web Scraping,Beautifulsoup,Web Crawler,我在保存我正在刮取的结果时遇到了一些困难。 请参考此代码(针对我的具体案例,此代码略有更改): 创建数据帧 df = pd.DataFrame(list(zip(date, headline, tag, corpus)), columns =['Date', 'Headlines', 'Tags', 'Corpus']) 我想保存此链接中的所有页面。代码是有效的,但似乎每次(即每一页)都会为语料库编写两个相同的句子: 我认为这是因为我选择了标签: corpo
df = pd.DataFrame(list(zip(date, headline, tag, corpus)),
columns =['Date', 'Headlines', 'Tags', 'Corpus'])
我想保存此链接中的所有页面。代码是有效的,但似乎每次(即每一页)都会为语料库编写两个相同的句子:
我认为这是因为我选择了标签:
corpora=soup.find_all('p')
这会导致我的数据框中的行不对齐,因为数据保存在列表中,如果与其他数据相比,语料库将在稍后开始正确地刮取
我希望您能帮助理解如何修复它。您很接近,但选择器关闭,并且您管理了一些变量
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
import pandas as pd
def main(req, num):
r = req.get("https://www.imolaoggi.it/category/cron/page/{}/".format(num))
soup = BeautifulSoup(r.content, 'html.parser')
goal = [(x.time.text, x.h3.a.text, x.select_one("span.cat-links").get_text(strip=True), x.p.get_text(strip=True))
for x in soup.select("div.entry-content")]
return goal
with ThreadPoolExecutor(max_workers=30) as executor:
with requests.Session() as req:
fs = [executor.submit(main, req, num) for num in range(1, 2937)]
allin = []
for f in fs:
allin.extend(f.result())
df = pd.DataFrame.from_records(
allin, columns=["Date", "Title", "Tags", "Content"])
print(df)
df.to_csv("result.csv", index=False)
我会使用如下css选择器:
eadline=[]
corpus=[]
date_list=[]
tag_list=[]
headlines=soup.select('h3.entry-title')
corpora=soup.select('div.entry-meta + p')
dates=soup.select('div.entry-meta span.posted-on')
tags=soup.select('span.cat-links')
for t in headlines:
headline.append(t.text)
for s in corpora:
corpus.append(s.text.strip())
for d in dates:
date_list.append(d.text)
for c in tags:
tag_list.append(c.text)
df = pd.DataFrame(list(zip(date_list, headline, tag_list, corpus)),
columns =['Date', 'Headlines', 'Tags', 'Corpus'])
df
输出:
Date Headlines Tags Corpus
0 30 Ottobre 2020 Roma: con spranga di ferro danneggia 50 auto i... CRONACA, NEWS Notte di vandalismi a Colli Albani dove un uom...
1 30 Ottobre 2020\n30 Ottobre 2020 Aggressione con machete: grave un 28enne, arre... CRONACA, NEWS Roma - Ha impugnato il suo machete e lo ha agi...
2 30 Ottobre 2020\n30 Ottobre 2020 Deep State e globalismo, Mons. Viganò scrive a... CRONACA, NEWS LETTERA APERTA\r\nAL PRESIDENTE DEGLI STATI UN...
3 30 Ottobre 2020 Meluzzi e Scandurra: “Sacrificare libertà per ... CRONACA, NEWS "Sacrificare la libertà per la sicurezza è un ...
你很接近,但是你的选择器关闭了,你管理错了一些变量 我会使用如下css选择器:
eadline=[]
corpus=[]
date_list=[]
tag_list=[]
headlines=soup.select('h3.entry-title')
corpora=soup.select('div.entry-meta + p')
dates=soup.select('div.entry-meta span.posted-on')
tags=soup.select('span.cat-links')
for t in headlines:
headline.append(t.text)
for s in corpora:
corpus.append(s.text.strip())
for d in dates:
date_list.append(d.text)
for c in tags:
tag_list.append(c.text)
df = pd.DataFrame(list(zip(date_list, headline, tag_list, corpus)),
columns =['Date', 'Headlines', 'Tags', 'Corpus'])
df
输出:
Date Headlines Tags Corpus
0 30 Ottobre 2020 Roma: con spranga di ferro danneggia 50 auto i... CRONACA, NEWS Notte di vandalismi a Colli Albani dove un uom...
1 30 Ottobre 2020\n30 Ottobre 2020 Aggressione con machete: grave un 28enne, arre... CRONACA, NEWS Roma - Ha impugnato il suo machete e lo ha agi...
2 30 Ottobre 2020\n30 Ottobre 2020 Deep State e globalismo, Mons. Viganò scrive a... CRONACA, NEWS LETTERA APERTA\r\nAL PRESIDENTE DEGLI STATI UN...
3 30 Ottobre 2020 Meluzzi e Scandurra: “Sacrificare libertà per ... CRONACA, NEWS "Sacrificare la libertà per la sicurezza è un ...
我觉得你是问这个问题的同一个用户,但来自不同的帐户?我遵循了这个问题和答案。这个问题就是我在我的问题中提到的(“针对我的具体案例,此代码略有更改”),但我没有找到链接。非常感谢,艾哈迈迪,我觉得你是问这个问题的同一个用户,但来自不同的帐户?我遵循了这个问题和答案。这个问题就是我在我的问题中提到的(“针对我的具体案例,此代码略有更改”),但我没有找到链接。非常感谢Ahmedthank你@Jack Fleeting,也谢谢你建议我使用css选择器。谢谢@Jack Fleeting,也谢谢你建议我使用css选择器。