2017-06-03 85 views
1

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

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

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

正如你所看到的那里有重复的代码。任何方式在这个?谢谢!

回答

5

您可以使用列表分配和理解,虽然它只有两页并不短。

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

我得到一个语法错误,我不知道为什么。它说最后我错过了一个]还是为了? – dj1121

+0

没关系,明白了! – dj1121

3

我喜欢的,而不是请求grequests库一次读取多个网址。特别是在处理大量的URL或包含许多子页面的单个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