为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过beautifulsoup 从具有清新提要的网站中提取完整的html 代码?

如何通过beautifulsoup 从具有清新提要的网站中提取完整的html 代码?

慕姐4208626 2022-01-18 16:24:03
我想用来自 9gag 提要(以及后来的其他图像板)的帖子建立一个语料库。为此,我尝试提取源 html 代码。不幸的是,一旦我想从该 html 代码中的提要中找到文章,似乎这些文章还没有与 html 代码一起提取。当我在提要中搜索某些内容时,使用 .find() 总是返回 -None- 。此时我使用了 lxml、html.parser 和 html5lib:soup = BeautifulSoup(source, 'html5lib')我搜索了浏览器显示给我的代码中出现的各种关键字,此时:entry = soup.find('div')比较浏览器检查器和汤变量中的代码,我得到不同的结果。检查器找到了汤变量找不到的关键字。我试图将requests.get函数的输出从更改为.text,.content但仍然没有出现所需的代码##get source text of 9gagsource = requests.get('https://9gag.com').text##make source a soup-typesoup = BeautifulSoup(source, 'html5lib')##clip out the needed code of html for entrysentry = soup.find('div id')我怎样才能获得 9gag 提要的完整代码,分别是形成单独帖子的代码?还有什么可能出了问题?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

似乎数据是以 JSON 形式接收的,因此最好仅使用requestsandJSON库来完成此任务。所以你的代码应该是这样的:


import requests

import json


url = "https://9gag.com"

headers = {"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:66.0) Gecko/20100101 Firefox/66.0"}

req = requests.get(url, headers=headers).text


json_raw = req[req.index("{\"page\":"):req.index("}})")+2]


posts = json.loads(json_raw)["data"]['posts']

希望这可以帮助


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 147 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信