【发布时间】:2019-08-27 08:36:55
【问题描述】:
我用 Python 编写了一个脚本,利用 BeautifulSoup 从网页中抓取不同项目的链接。 当我运行我的脚本时,我在 36 个链接中只得到了 6 个链接。
虽然该页面的其余内容是动态生成的,但我相信有任何优雅的方式可以使用请求来获取它们。
如何使用请求获取它们?
我试过了:
import requests
from bs4 import BeautifulSoup
link = "find the link above"
def get_links(link):
res = requests.get(link,headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text,"lxml")
for item_links in soup.select("#pull-results figure[data-pingdom-info='purchasable-deal']"):
item_link = item_links.select_one("a[class^='cui-content']").get("href")
yield item_link
if __name__ == '__main__':
for elem in get_links(link):
print(elem)
注意:我不寻求任何与 selenium 等浏览器模拟器相关的解决方案。
【问题讨论】:
-
你需要弄清楚动态内容的AJAX请求
-
不确定是什么问题,因为当我运行您的代码时,我得到了 37 个链接。我会尝试的一件快速的事情是将
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'用于您的标题
标签: python python-3.x web-scraping