我试图解析来自新闻搜索“测试”Google的每个新闻元素的标题和文本
Each element contains the g-card tag:
当我尝试使用以下方法进行分析时:
from bs4 import BeautifulSoup
import requests
url="https://www.google.com/search?q=bitcoin&sxsrf=ALeKk00r2AqKlBSgzF1T_zG1uQBaBKSN1g:1612525788197&source=lnms&tbm=nws&sa=X&ved=2ahUKEwji6q7W1tLuAhW0ShUIHSGmBpoQ_AUoAXoECBcQAw&biw=2513&bih=1315"
code=requests.get(url)
soup=BeautifulSoup(code.text,"html.parser")
soup.find_all("g-card")
结果是一个空列表:
[]
我应该如何修改find_all
以返回允许从每个结果中选择标题和文本的新闻结果
您试图解析的网站是动态的(这意味着js需要在浏览器中运行,以便呈现您看到的HTML)
因此,使用
requests
获取HTML只会在运行js之前返回整个页面源代码因此,要解析动态网站,您必须使用类似
selenium
的东西在浏览器中运行js,然后您可以从中获取HTML文件,并使用BeautifulSoup
解析它我回答了类似的问题here
代码(我在这里添加了两行额外的代码,用于提取文章摘要):
或者,您可以从SerpApi下载Google News Result API
JSON的一部分:
要集成的代码:
输出:
免责声明,我为SerpApi工作
这就是诀窍:
其中包含结果的文本
要分析URL的地址,请执行以下操作:
完整代码:
相关问题 更多 >
编程相关推荐