我在Python編寫的腳本保存的數據刮分佈在多個頁面從網頁的某些產品的不同子分類鏈接,並保存在不同的表(將其命名爲根據標題的產品)在Excel文件中。在這種情況下,我使用了「pyexcel」。首先,刮板應該將該網頁中的「item_list」和「所有品牌」的名稱進行比較。無論何時,找到匹配它會颳去該鏈接,然後追查和分析所有的子類別鏈接遍歷多個頁面,並保存在一個Excel文件,我在前面已經說。如果這些產品不分散在多個頁面上,它將毫無錯誤地運行。但是,我在「item_list」中選擇了三個已分頁的「項目」。刮板拋出錯誤,同時從多個頁面
當我執行我的腳本,它拋出下面的錯誤。但是,我注意到有了這個錯誤,一個包含來自單個頁面的子類別鏈接的項目就被完成了。它會在保存子類鏈接下一頁的數據時拋出錯誤。我該如何解決這個問題?提前致謝。
以下是完整的腳本:
import requests ; from lxml import html
from pyexcel_ods3 import save_data
core_link = "http://store.immediasys.com/brands/"
item_list = ['Adtran','Asus','Axis Communications']
def quotes_scraper(base_link, pro):
response = requests.get(base_link)
tree = html.fromstring(response.text)
data = {}
for titles in tree.cssselect(".SubBrandList a"):
if titles.text == pro:
link = titles.attrib['href']
processing_docs(link, data) #--------#Error thrown here#----- #
def processing_docs(link, data):
response = requests.get(link).text
root = html.fromstring(response)
sheet_name = root.cssselect("#BrandContent h2")[0].text
for item in root.cssselect(".ProductDetails"):
pro_link = item.cssselect("a[class]")[0].attrib['href']
data.setdefault(sheet_name, []).append([str(pro_link)])
save_data("mth.ods", data)
next_page = root.cssselect(".FloatRight a")[0].attrib['href'] if root.cssselect(".FloatRight a") else ""
if next_page:
processing_docs(next_page)
if __name__ == '__main__':
for item in item_list:
quotes_scraper(core_link , item)
錯誤我遇到:
Traceback (most recent call last):
File "C:\Users\ar\AppData\Local\Programs\Python\Python35-32\goog.py", line 34, in <module>
quotes_scraper(core_link , item)
File "C:\Users\ar\AppData\Local\Programs\Python\Python35-32\goog.py", line 15, in quotes_scraper
processing_docs(link, data)
File "C:\Users\ar\AppData\Local\Programs\Python\Python35-32\goog.py", line 30, in processing_docs
processing_docs(next_page)
TypeError: processing_docs() missing 1 required positional argument: 'data'
順便說一句,如果我沒有「pyexcel」運行此腳本,它不會遇到任何問題,在所有。我遇到的錯誤是因爲寫入和保存數據。
看起來像你發現的問題。當我完成時回到你身邊。謝謝Stael。 – SIM
你做了我的一天,男人!我可以問一個簡單的問題嗎? – SIM
是的,繼續。 – Stael