簡體   English   中英

如何使用python抓取多頁網站並將數據導出到.csv文件?

[英]how to scrape multipage website with python and export data into .csv file?

我想使用python抓取以下網站,並且需要將抓取的數據導出到CSV文件中:

http://www.swisswine.ch/en/producer?search=&&

該網站包括154頁相關搜索。 我需要調用每個頁面並想抓取數據,但是我的腳本無法連續調用下一頁。 只刮一頁數據。

在這里,我分配的值是i <153,因此該腳本僅在第154頁上運行,並提供了10個數據。 我需要第一頁到第154頁的數據

一旦運行腳本,如何從所有頁面抓取全部數據,以及如何將數據導出為CSV文件?

我的腳本如下

import csv
import requests
from bs4 import BeautifulSoup
i = 0
while i < 153:       
     url = ("http://www.swisswine.ch/en/producer?search=&&&page=" + str(i))
     r = requests.get(url)
     i=+1
     r.content

soup = BeautifulSoup(r.content)
print (soup.prettify())


g_data = soup.find_all("ul", {"class": "contact-information"})
for item in g_data:
      print(item.text)

您還應該將HTML解析代碼放到循環下面 而且您沒有正確地遞增i變量(感謝@MattDMo):

import csv
import requests
from bs4 import BeautifulSoup

i = 0
while i < 153:       
     url = ("http://www.swisswine.ch/en/producer?search=&&&page=" + str(i))
     r = requests.get(url)
     i += 1 

    soup = BeautifulSoup(r.content)
    print (soup.prettify())

    g_data = soup.find_all("ul", {"class": "contact-information"})
    for item in g_data:
          print(item.text)

我還將改進以下內容:

  • 使用requests.Session()維護網絡抓取會話,這也將帶來性能提升:

    如果您要向同一主機發出多個請求,則基礎TCP連接將被重用,這可能會導致性能顯着提高

  • 明確說明BeautifulSoup的基礎解析器:

     soup = BeautifulSoup(r.content, "html.parser") # or "lxml", or "html5lib" 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM