0

我需要從商業網站獲取產品ID。產品ID是URL末尾的數字序列。刮Python需要建議

例如:http://example.com/sp/123170/有產品ID 123170

一些要求:

  • 代碼必須被Python
  • 由於產品的數量很大寫的,我希望軟件能夠重新啓動停止由於一些原因後。
  • 可以每天運行一次。
  • 新產品每天更新/添加,因此軟件需要能夠處理該問題。 如果可能,我很樂意使用谷歌應用引擎

請推薦我一些想法和這個工作的開源代碼。我發現scrapy.orgBeautifulsoup。請給我一些建議,哪一個更適合這個目的?

+0

http://whathaveyoutried.com/ – Andbdrew

+0

@好,他是要求推薦,而不是代碼。所以我認爲它是一個真正的問題。 –

+0

@SushantGupta足夠公平,雖然scrapy和BeautifulSoup做不同的事情,他們可以一起使用。 http://doc.scrapy.org/en/0.16/faq.html#how-does-scrapy-compare-to-beautifulsoup-or-lxml – Andbdrew

回答

1

對於定期調度,你可以找cron jobs在應用程序引擎。

另外,Scrapy是很好的網頁抓取框架。其他可供選擇的方法是使用美麗的湯和requests API(支持身份驗證和多線程下載)。

但我會建議您在報廢之前,看看該商業網站是否提供了一些API。

+0

謝謝。該網站不提供任何API。 Scrapy vs美麗的湯,哪一個更好? – John

+0

<個人喜好,沒有理性的理由:>我更喜歡使用請求和美麗的湯。對於db解決方案,我喜歡MongoDB,因爲它無模式,適合存儲非結構化數據。我從來沒有在我的應用程序中使用過Scrapy。 –

1

lxml.html是目前python最好的html解析器。將文檔解析爲lxml,並使用xpath來查找所需的數據。

http://lxml.de/lxmlhtml.html#parsing-html

+0

如果html格式不正確,那麼Lxml會有一些問題,再加上它會花費更多的時間來完成它。此外,它是一個C庫,因爲它會很快,但在編譯Windows時會遇到問題 – Goranek

+0

Beautifulsoup 4現在使用lxml,所以如果lxml失敗,它也會失敗。 – Dikei

+0

感謝您的所有建議。我對網絡抓取很陌生。我不知道如何獲得所有頁面的產品ID。我是否應該使用循環訪問每個產品頁面,檢查頁面是否存在。如果頁面退出,那麼獲取產品ID?但有數百萬的產品頁面,不可能使用我的方法。任何建議?非常感謝。 – John

1

您將需要一個爬網程序和一種在每個爬網會話之間保存數據的方法。

對於爬蟲,我們建議使用scrapy。對於大多數目的來說,它比真正的自己動手更好。如果你使用scrapy,你不需要BeautifulSoup因爲Scrapy使用lxml,這在我看來是目前最好的HTML解析器

要保留會話之間的數據,你可以存儲在數據庫中抓取的數據,我更喜歡使用sqlalchemy爲這個目的,但這可能不適用於App Engine。 sqlalchemy支持很多數據庫引擎,其中sqlite3是最容易設置的。