Python从多个页面请求.get()?

时间:2017-06-03 12:44:01

标签: python web-scraping beautifulsoup python-requests

我正在学习如何使用python进行webscrape,我想知道是否可以使用requests.get()抓取两个页面,这样我就不必再进行两次单独的调用和变量了。例如:

r1 = requests.get("page1")
r2 = requests.get("page2")

pg1 = BeautifulSoup(r1.content, "html.parser")
pg2 = BeautifulSoup(r2.content, "html.parser")

正如您所看到的,重复的代码。有什么方法吗?谢谢!

2 个答案:

答案 0 :(得分:5)

您可以使用列表分配和理解,但只有两页不会更短。

pg1, pg2 = [ BeautifulSoup(requests.get(page).content, "html.parser")
                for page in ["page1","page2"] ]

答案 1 :(得分:3)

我喜欢 grequests 库一次获取多个URL,而不是请求。特别是在处理大量URLS或具有许多子页面的单个URL时。

import grequests  
urls = ['http://google.com', 'http://yahoo.com', 'http://bing.com']  
unsent_request = (grequests.get(url) for url in urls)

results = grequests.map(unsent_request) 

在此之后,可以根据需要处理results。这适用于JSON数据:results[0] =第一个URL数据,results[1] =第二个URL数据等。

可以找到更多here