微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用select_one提取标签

如何解决使用select_one提取标签

我正在尝试从此页面使用Python中的CSS选择器提取特定标签内的内容https://scenarieconomici.it/page/898/

特别是,我对标题,日期,作者,类别和摘要很感兴趣。 我尝试如下:

    print(tag.select_one(".entry-title").text)
    print(tag.select_one("span.Meta-time").text)
    print(tag.select_one("span.Meta-author").text)
    print(tag.select_one("span.category-item").text)
    print(tag.find_next(class_="entry-content").text.strip())  

能否请您告诉我它们是否正确?如果需要,我可以为您提供我正在使用的全部代码

非常感谢


在下面Wasif的回答之后,我更改了代码,但不幸的是,标签似乎仍然存在问题:

import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
import pandas as pd

def main(req,num):
    r = req.get("https://scenarieconomici.it/page/{}/".format(num))
    # r = req.get("https://www.imolaoggi.it/category/polit/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.site-content")]
    for tag in soup.select('div',class_='entry-blog'):
        print(tag.find('span',class_='entry-title'))
        print(tag.find('span',class_='Meta-time'))
        print(tag.find('span',class_='Meta-author'))
        print(tag.find('span',class_='category-item'))
        print(tag.find_next(class_='entry-content'))
    return tag.find('span',class_='entry-title'),tag.find('span',class_='Meta-time'),class_='Meta-author'),class_='category-item'),tag.find_next(class_='entry-content')

with ThreadPoolExecutor(max_workers=30) as executor:
    with requests.Session() as req:
        # fs = [executor.submit(main,req,num) for num in range(1,2937)]
        fs = [executor.submit(main,2)]
        allin = []
        for f in fs:
            allin.append(f.result())
        df = pd.DataFrame.from_records(
            allin,columns=["Title","Time","Author","Category","Content"])
       

因为我只得到None值。

解决方法

为什么不使用.find()

print(tag.find('span',class_='your class'))
,
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor
from itertools import repeat
import re
import pandas as pd


def main(req,num):
    r = req.get("https://scenarieconomici.it/page/{}/".format(num))
    soup = BeautifulSoup(r.content,'html.parser')
    return [(
            x.select_one("h2.entry-title").text,x.select_one("span.meta-time").text,x.select_one("span.meta-author").a.text,x.select_one("span.category-item").a.text,x.select_one("div.entry-content").p.text
            )
            for x in soup.findAll("article",id=re.compile(r"post-\d+"))]


with ThreadPoolExecutor(max_workers=50) as executor:
    with requests.Session() as req:
        fs = executor.map(main,repeat(req),range(1,899))
        final = []
        [final.extend(f) for f in fs]
        df = pd.DataFrame.from_records(
            final,columns=["Title","Time","Author","Category","Content"])
        print(df)

输出

                                                   Title              Time  ...         Category                                            Content
0      LA SOLUZIONE DEL TEAM BIDEN PER IL COVID: MORI...  11 Novembre 2020  ...       attualita'  Ezekiel Emanuel Biden ha gia fatto partire i s...
1      10 Procuratori Statali con Trump,contro la Pe...  11 Novembre 2020  ...       attualita'  I procuratori generali del Missouri,Alabama,...
2      TAGLIARE L’IVA: rilanciare l’economia ed incre...  11 Novembre 2020  ...       attualita'  Ieri Salvini e Bagnai hanno presentato il pian...
3      Il Parlamento Europeo? Incrementa i vincoli su...  10 Novembre 2020  ...       attualita'  Lunedì in commissione ECON è  stato  discusso ...
4      Dove siete finiti,cari rigoristi dell’austeri...  10 Novembre 2020  ...  analisi e studi  Dove siete finiti,detrattori della spesa pubb...
...                                                  ...               ...  ...              ...                                                ...
17941     Analisi della CRISI attuale: la GUERRA incombe  12 Novembre 2011  ...    Uncategorized  10 domande e 10 rispostePerche’ gli spread tra...
17942  SEMPLICE CRISI FINANZIARIA O TERZA GUERRA MOND...    12 Luglio 2011  ...    Uncategorized  Intervista immaginaria a Frank (che spiega per...
17943  SLIDING DOORS: “SIAMO L’UNICO PAESE DEL MONDO ...    12 Giugno 2011  ...    Uncategorized  Spesso siamo portati a criticare,a lamentarci...
17944             L’origine del DEBITO PUBBLICO Italiano    12 Giugno 2011  ...    Uncategorized  Spesso ci si chiede la vera origine del nostro...
17945                              La caduta dei Giganti    12 Giugno 2011  ...    Uncategorized  Vorrei soffermarmi un’istante sui 3 paesi card...

[17946 rows x 5 columns]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。