【问题标题】:Python requests .get() from multiple pages?Python从多个页面请求.get()?
【发布时间】:2017-11-04 18:13:21
【问题描述】:

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

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

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

如您所见,有重复的代码。有什么办法吗?谢谢!

【问题讨论】:

    标签: python web-scraping beautifulsoup python-requests


    【解决方案1】:

    我喜欢 grequests 库一次获取多个 URL,而不是 requests。特别是在处理大量 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

    【讨论】:

      【解决方案2】:

      您可以使用列表分配和推导式,虽然它只有两页,但并不短。

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

      【讨论】:

      • 我遇到语法错误,我不知道为什么。它最后说我缺少 ] 或 for?
      猜你喜欢
      • 1970-01-01
      • 2018-01-18
      • 2021-10-07
      • 2013-12-05
      • 1970-01-01
      • 1970-01-01
      • 2019-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多