【发布时间】:2020-10-05 06:40:25
【问题描述】:
我正在尝试抓取大量数据并循环浏览许多页面。当我在循环中超过 5 页左右时,我不断收到超时错误。
### Libraries ###
import pyppdf.patch_pyppeteer
from bs4 import BeautifulSoup, SoupStrainer
import requests
from requests_html import HTMLSession
import pandas as pd
from time import sleep
import urllib.request
### SCRAPING PAGES 1-15
all_beer_info = []
for i in range(1,16):
url = 'https://specsonline.com/product-category/beer/page/{}/'.format(i)
print(url)
session = HTMLSession()
resp = session.get(url, timeout=None)
site = resp.html.render() #RENDERS INCASE ITS JAVASCRIPT SITE
soup = BeautifulSoup(resp.html.html, features='lxml')
beer_info = soup.select('.woocommerce-loop-product__title')
for b in beer_info:
results = (b.text)
all_beer_info.append(results)
sleep(randint(2,5))
有时这将运行整个脚本而不会出错,有时它会返回以下内容:
pyppeteer.errors.TimeoutError: Navigation Timeout Exceeded: 8000 ms exceeded.
我有四个不同的循环,如上面的循环:名称、价格、产品尺寸等。
如果它通过一两个循环,它将在代码完成之前超时,从而使这段时间变得毫无用处。是否有更有效的方法来运行此代码并组合数据?任何信息将不胜感激。
【问题讨论】:
标签: python loops web-scraping beautifulsoup timeout