Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web scraping 在一天半的时间里,网站浏览了48000个url页面,但仍在继续。这正常吗?_Web Scraping_Beautifulsoup - Fatal编程技术网

Web scraping 在一天半的时间里,网站浏览了48000个url页面,但仍在继续。这正常吗?

Web scraping 在一天半的时间里,网站浏览了48000个url页面,但仍在继续。这正常吗?,web-scraping,beautifulsoup,Web Scraping,Beautifulsoup,我收集了48000个url页面,并将它们放在一个列表中。我的目标是使用BeautifulSoup提取8条数据,并将每个数据点附加到URL列表中的空列表中 在我运行下面的for循环之前,我在列表中的3个URL上测试了提取,它工作得非常好 我知道代码是有效的,但我怀疑,由于我的代码已经运行了一天半,完成48000个url页面的web抓取需要多少时间。这让我质疑我的代码,或者说我创建代码效率低下 是否有人可以检查我的代码,并提供任何建议或想法,如何使代码运行更快 提前谢谢 title_list = [

我收集了48000个url页面,并将它们放在一个列表中。我的目标是使用BeautifulSoup提取8条数据,并将每个数据点附加到URL列表中的空列表中

在我运行下面的for循环之前,我在列表中的3个URL上测试了提取,它工作得非常好

我知道代码是有效的,但我怀疑,由于我的代码已经运行了一天半,完成48000个url页面的web抓取需要多少时间。这让我质疑我的代码,或者说我创建代码效率低下

是否有人可以检查我的代码,并提供任何建议或想法,如何使代码运行更快

提前谢谢

title_list = []
price_list = []
descrip_list = []
grape_variety_list = []
region_list = []
region_list2 = []
wine_state_list = []
wine_country_list = []

with requests.Session() as session:
    for link in grape_review_links_list:
        response2 = session.get(link, headers=headers)
        wine_html = response2.text
        soup2 = BeautifulSoup(wine_html, 'html.parser')

        wine_title = soup2.find('span', class_='rating').findNext('h1').text
        title_list.append(wine_title)

        wine_price = soup2.find(text='Buy Now').findPrevious('span').text.split(',')[0]
        price_list.append(wine_price)

        wine_descrip = soup2.find('p', class_='description').find(text=True, recursive=False)
        descrip_list.append(wine_descrip)

        wine_grape = soup2.find(text='Buy Now').findNext('a').text
        grape_variety_list.append(wine_grape)

        wine_region = soup2.find(text='Appellation').findNext('a').text
        region_list.append(wine_region)

        wine_region2 = soup2.find(text='Appellation').findNext('a').findNext('a').text
        region_list2.append(wine_region2)

        wine_state = soup2.find(text='Appellation').findNext('a').findNext('a').findNext('a').text
        wine_state_list.append(wine_state)

        wine_country = soup2.find(text='Appellation').findNext('a').findNext('a').findNext('a').findNext('a').text
        wine_country_list.append(wine_country)

所有soup2.find(text='addression').findNext('a')…都重复了…findNext('a')。如果没有.text,文本可能会运行得更快,保存当前位置并同时使用它来获取文本和下一个'a'。findall'a'可能更好,并且可以限制:soup2.find_all(“a”,limit=4)cf,根据页面大小和连接速度,它可以在一次调用中提供4个标记。。。这对我来说并不是不合理的。。。你所有的链接都是同一个域名吗?@B.Go谢谢你的建议。下次我会试试看,看看你提供的链接。@JonClements这些链接都来自同一个域。这是我第一次做一些真正的网页抓取,所以它让我怀疑代码几乎运行了两天。我也不想耗尽我的计算机资源。我会继续保持信心,让它继续下去。希望明天就可以完成。做一些事情,比如添加输出、批量工作、添加一些测试等等,直到你不再需要信心:)