Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 避免在浏览页面时复制某些内容_Python_Web Scraping_Beautifulsoup_Web Crawler - Fatal编程技术网

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选择器。