Я выполняю простой веб-скрейпинг с помощью функции Python ниже, которая использует BeautifulSoup.
import requests
from bs4 import BeautifulSoup
def webcheck(company,cat,count):
query = '%s +%s' %(company,cat)
url = 'https://www.google.com/search?q='+query
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0'}
source = requests.get(url, headers=headers).text
# BeautifulSoup
soup = BeautifulSoup(source, 'lxml')
search_div = soup.find_all(class_='rc')
return [search_div[x].find(class_='st').text for x in range(count)]
company, cat, count = ('Walmart','+stock quote', 3)
webcheck(company,cat,count)
Он работает и возвращает 3 верхние строки текста из поиска, как задумано.
Он также работает с DataFrame
из 5 строк (используя apply(lambda x: webcheck(x.name,key,3), axis=1)
.
, но не с более крупными DataFrame
из 2000 строк, что приводит к ошибке ниже.
IndexError: list index out of range
Странно и больше всего сбивает с толку то, что как одиночный поиск (с использованием функции), так и поиск в одном и том же DataFrame из 5 строк после этого также перестают работать .... до нескольких часов или на следующий день.
Благодарен за любой идеи или решения.