我想用来自 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']
希望这可以帮助
添加回答
举报
0/150
提交
取消