Python 无法使用BeautifulSoup定位元素并刮取内容

Python 无法使用BeautifulSoup定位元素并刮取内容,python,web-scraping,beautifulsoup,request,Python,Web Scraping,Beautifulsoup,Request,我正在从这一页中删除正文: 我首先使用了soup.find来定位容器;然后我用find_all查找每个段落 但我得到了这个错误信息: --------------------------------------------------------------------------- AttributeError Traceback (most recent call last) <ipython-input-41-93c17c22

我正在从这一页中删除正文:

我首先使用了soup.find来定位容器;然后我用find_all查找每个段落

但我得到了这个错误信息:


---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-41-93c17c229d31> in <module>
----> 1 scrape('https://time.com/search/')

<ipython-input-40-db7010f17eac> in scrape(url)
     41                 #containerr = soup.find("div", class_=['article-content', 'karma-main-column'])
     42                 containerr = soup.find("div", {'class': 'padded'})
---> 43                 articletext = containerr.find_all('p')
     44                 thearticle = [] # clear from the previous loop
     45                 paragraphtext = [] # clear from the previous loop

AttributeError: 'NoneType' object has no attribute 'find_all'

如有任何建议,将不胜感激

异常可能是由于请求引起的;在使用请求时,您需要指定一个用户代理,但在您的情况下,urllib将完美地工作。我还遇到了一些请求问题:它有时无法加载整个页面

更新你的代码 假设您正在使用链接列表进行抓取:

from bs4 import BeautifulSoup
import urllib
import requests
pagelinks = ["https://time.com/5841895/global-coronavirus-battle/", "https://time.com/5842982/japan-arrest-anime-arson/"]
for url_page in pagelinks:

    req = urllib.request.Request(url_page,data=None)
    f = urllib.request.urlopen(req)
    page = f.read().decode('utf-8')
    soup = BeautifulSoup(page, 'html.parser')


    articletext = soup.find_all('p')
    text = str(articletext)
    print(text)
对于每个迭代,您将打印如下内容

柏林——周六,中国新的冠状病毒病例首次降至零,但在印度激增,席卷了整个拉丁美洲的医院——这两个国家都对封锁松懈,也有那些被称赞为严格、早期隔离的国家。该病毒袭击了德国一座重新开放的教堂,可能还有一家餐厅。

,这场大流行的原因在美国东北部,新的斋月开始时,雨水打湿了假日周末的开始。在美国东北部,新的斋月开始时,美国的阵亡将士纪念日周末以及穆斯林世界庆祝斋月结束的集体庆祝活动都受到了影响人们曾期望开放的海滩能吸引成群结队的人群,并测试社交距离规则的有效性。

,然而,唐纳德·特朗普总统在流感大流行期间第一次参观了他的私人高尔夫俱乐部之一——北弗吉尼亚州的特朗普国家高尔夫俱乐部。在关闭商业和户外场地数月后,特朗普总统终于离开了o帮助减缓病毒的传播。

,在医疗体系薄弱、人口贫困、清洁水不足的国家,抗击病毒越来越困难。

,“我是一位母亲,如果我不出去卖东西,我的孩子们就没有食物吃了。尽管我们身处危险之中,我不得不出去到这里来卖产品。”几内亚首都科纳克里的市场小贩Nagnouma Kante说,土耳其从周六开始对斋月结束的开斋节实施了迄今为止最严厉的封锁措施,也门胡塞叛军敦促信徒戴上口罩呆在室内,因为当局试图在通常以天为标志的时间控制感染在其他地方,许多政府正在放松限制,因为他们面临着与该病毒的斗争所带来的政治反弹和历史性衰退。在短短几个月内,该流行病已在全世界造成至少33.8万人死亡,并感染了520多万人约翰·霍普金斯大学保存的ly。

,年,该国西北部的一家餐馆似乎有7人感染。这将是餐馆两周前重新开张以来已知的第一例此类病例。

,在西南部城市法兰克福,超过40人在Ev教堂服务后检测呈阳性5月10日,天使式基督教浸信会集会。该市卫生办公室称其中一人住院。

,一名教会领袖表示,该社区已遵守所有卫生规定,但已取消了所有集会,目前正在网上举行服务。哈瑙附近的当局决定取消计划于周日在体育场举行的穆斯林祈祷活动,作为一项活动预防措施。

,新感染并不被视为对德国整体病毒战略的威胁,德国总理安吉拉·默克尔(Angela Merkel)表示,德国“迄今为止已经成功地实现了防止我们的卫生系统不堪重负的目标。”

,宗教活动有助于病毒在流感大流行早期传播,

,考虑到福音派基督徒在11月选举前是他支持基础的关键,特朗普周五称礼拜堂为“必不可少的”法国允许宗教服务从周六开始恢复。此前,法国对政府禁止在礼拜场所举行集会的禁令提出了法律挑战。

,世界主要朝圣地点之一的耶路撒冷圣墓教堂将于周日重新开放基督徒认为耶稣被钉死、埋葬和复活的地方。

,拉丁美洲是最新的病毒中心,专家们注意到,在这个地区,政府行动的局限性,数百万人有非正式工作,许多警察力量软弱或腐败,无法实施限制。

,墨西哥报告了创纪录的数字本周,几乎每天都有人感染和死亡,这加剧了人们对总统有限禁闭的批评。但感染率也在上升,秘鲁、智利和厄瓜多尔的重症监护病房被淹没,所有这些国家都因实施早期和积极的业务关闭和隔离而受到赞扬。

,,在美国,一些人认为,这是一个严重的问题
eGion的开放速度比其他的要快。加利福尼亚州正在为下周的游客准备酿酒厂,拉斯维加斯的赌场将于6月4日重新开放。

,州长安德鲁·库莫(Andrew Cuomo)在阵亡将士纪念日周末及时放松了该州对集会的禁令,纽约人获得了意想不到的喘息机会,在传统上被视为夏季开球的地方举行野餐和户外活动。

,一些家庭计划在病毒袭击后第一次去海滩或国家公园,内政部长大卫·伯恩哈特计划周六参观大峡谷。

,美国是受灾最严重的国家,据约翰·霍普金斯统计,160万确诊病例中有96000多人死亡,其次是俄罗斯和巴西。

,周六出现了一个希望的迹象:去年晚些时候爆发疫情的中国首次报告没有新的确诊病例。

,随着日本重新开放,发布了指导方针,要求酒吧女招待和其他夜生活工作者戴口罩,每30分钟漱口一次,并在每次使用卡拉OK话筒后消毒。韩国在经历了超过

,,之后又重新开放并关闭了数千家俱乐部,新的案例显示周六又一次创纪录的增长,随着为期两个月的禁赛缓解,连续第二天超过6000家。最近几天,病例相对较少的州出现了高峰,因为居民,包括乘坐特快列车的移民工人已经回家。

,,而一些国家正面临第二波感染,疫情严重,周六每天报告9000多例新病例。

,,查尔顿从巴黎报道,Kageyama从东京报道。美联社世界各地的作家都有贡献。

联系我们。

]谢谢!但是这个代码对我不起作用。因为我想抓取多篇文章,这些文章的链接存储在列表页面链接中;此外,我使用的是用户代理字符串。你能更新你的答案吗?请让我知道我是否需要在问题描述中包含我的完整代码;您可以简单地使用for循环迭代这个过程;尽管如此,我还是会更新代码,向您展示如何在这个用例中循环,没有问题@用文本提取更新了悦鹏;你自己试试看,效果很好。谢谢!它起作用了!但这只是一个小问题,每个提取的文本都包含要完全重新打开的状态。有没有办法删除它?@YuePeng如果使用第二个实现,只需存储元素。get_text:它为每次迭代提取与该元素相关的文本。
from bs4 import BeautifulSoup
import urllib
import requests
pagelinks = ["https://time.com/5841895/global-coronavirus-battle/", "https://time.com/5842982/japan-arrest-anime-arson/"]
for url_page in pagelinks:

    req = urllib.request.Request(url_page,data=None)
    f = urllib.request.urlopen(req)
    page = f.read().decode('utf-8')
    soup = BeautifulSoup(page, 'html.parser')


    articletext = soup.find_all('p')
    text = str(articletext)
    print(text)