我刚开始用python和BeautifulSoup做实验。
我想获得与特定城市相关的文章的链接。
下面是当前的代码
import requests
from bs4 import BeautifulSoup
city = "london"
result = requests.get('https://www.origo.hu/kereses/index.html?q=' + city)
def main_loop():
soup = BeautifulSoup(result.content, features="lxml")
articles = soup.find("div", "oc-articleList")
print(articles)
if result.status_code == 200:
main_loop()
else:
print('error:', result.status_code)结果是:
<div class="oc-articleList"></div>我试过的第一件事是弄到这些文章:
articles = soup.find_all("article")但它能找到任何东西。
如果您检查站点的源代码,它看起来如下所示:
<div class="oc-articleList">
<article>...</article>
<article>...</article>
<article>...</article>
<article>...</article>
.
.
.
</div>如何使BS更深入地解析DOM?
发布于 2020-09-23 17:41:57
答覆1)
TLDR:只需在搜索第一个元素以查找嵌套元素之后添加另一个.find()或.find_all()。
一旦找到带有soup.find()的div元素(在您的示例中是变量文章),就可以使用.find()或.find_all()调用另一个查询。
为了说明,根据您提供的代码:
...
def main_loop():
soup = BeautifulSoup(result.content, features="lxml")
### ADDED .find_all() after the first search ###
articles = soup.find("div", "oc-articleList").find_all("article")
print(articles)
...记住,find_all()现在将返回一个列表
答覆2)
请求只捕获HTML和CSS内容,而JavaScript不显示。
解决方案:使用预渲染服务
result = requests.get("http://service.prerender.io/https://www.sample.com/")https://stackoverflow.com/questions/64033049
复制相似问题