我刚开始尝试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?
ANSWER 1(
TLDR:只需在搜索第一个元素后添加另一个.find((或.find_all((即可找到嵌套元素。
在汤.find(((在您的案例中是变量文章(中找到div元素后,您可以使用.find
举例来说,基于您提供的代码:
...
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/")