我想使用Python Scrapy module來刮掉我網站上的所有URL並將列表寫入文件。我看了一些例子,但沒有看到一個簡單的例子來做到這一點。如何使用Python Scrapy模塊列出來自我網站的所有網址?
回答
這裏是爲我工作的Python程序:
from scrapy.selector import HtmlXPathSelector
from scrapy.spider import BaseSpider
from scrapy.http import Request
DOMAIN = 'example.com'
URL = 'http://%s' % DOMAIN
class MySpider(BaseSpider):
name = DOMAIN
allowed_domains = [DOMAIN]
start_urls = [
URL
]
def parse(self, response):
hxs = HtmlXPathSelector(response)
for url in hxs.select('//a/@href').extract():
if not (url.startswith('http://') or url.startswith('https://')):
url= URL + url
print url
yield Request(url, callback=self.parse)
保存在一個名爲spider.py
文件。
然後,您可以使用一個管道來進行後期處理這樣的文字:
bash$ scrapy runspider spider.py > urls.out
bash$ cat urls.out| grep 'example.com' |sort |uniq |grep -v '#' |grep -v 'mailto' > example.urls
這讓我在我的站點中的所有獨特的URL列表。
很酷。你已經得到了答案。現在繼續,接受答案......哦,是的,可能會有一個「自我學習者」徽章等着你。 :) – Nishant 2012-03-06 04:34:55
這個程序有一個小錯誤。 'if not not url.startswith('http://'):'不會正確處理https鏈接。 – 2015-06-27 17:24:05
@JoshuaSnider我更新了它。但這是示例代碼的一小段代碼,所以它並不意味着對所有情況都是權威的。 – 2015-06-27 22:18:16
吸塵器(也許更有用的)東西會使用LinkExtractor
from scrapy.linkextractors import LinkExtractor
def parse(self, response):
le = LinkExtractor() # empty for getting everything, check different options on documentation
for link in le.extract_links(response):
yield Request(link.url, callback=self.parse)
這是否會返回網站內部或外部的鏈接? – 2016-09-06 09:30:56
- 1. 使用Scrapy獲取整個網站中的所有網址
- 2. 如何使用scrapy來抓取網站中的所有項目
- 3. 如何在我的網站上使用scrapy在頁面中列出具有關鍵字的網址?
- 4. 的Drupal如何網址別名添加到 「網站/所有/模塊/ ...」
- 5. 如何使用LinkExtractor獲取網站中的所有網址?
- 6. 陰影網站模塊,通過我自己的模塊在Python
- 7. 使用python從網站獲取所有網址
- 8. 如何使用Asp.net抓取過程來獲取網站的所有網址?
- 9. 如何抓取一個網站只有域名網址scrapy
- 10. jquery更改網站的所有網址
- 11. 我如何使用Scrapy python登錄到stackoverflow網站
- 12. 使用python&scrapy颳去網站
- 13. 如何使用platformRequest來調用網站的網址?
- 14. MVC4:網站上可用的所有網址列表?
- 15. 如何從網站獲取所有有效的網址?
- 16. 如何更改Sevral Sharepoint網站或所有我的Sharepoint網站上的網站徽標網址?
- 17. Scrapy使用Scrapy和硒的網站
- 18. 列出網站上的所有文件
- 19. 如何使用scrapy抓取網站?
- 20. Python Scrapy動態網站
- 21. 我如何提供父級網站資源供所有兒童模塊使用?
- 22. 列出所有的網站,文本框
- 23. 如何使用CSS選擇器來提取Python的Scrapy的網址?
- 24. 爲我網站上的所有網址添加擴展程序
- 25. 如何使用Scrapy和Splash來抓取基於AJAX的網站?
- 26. 如何讓我的網站使用乾淨的網址?
- 27. 使用AsyncIO和aiohttp來抓取網站並收集所有網址的程序
- 28. Scrapy-Javascript網站
- 29. 如何爲我的網站使用php創建絕對網址?
- 30. 的Liferay:刪除/網絡/來自所有社區網站
的StackOverflow是不是一個網站,請人編寫代碼爲你 - *嘗試一些*,然後來問一個關於一個問題你遇到的具體問題。 – Amber 2012-03-05 02:47:16
你有試過那裏的教程嗎?這是相當自我解釋。如果你/有/嘗試過教程,仍然有問題,請嘗試發佈一些你先試過的代碼(+1 @Amber) – inspectorG4dget 2012-03-05 02:58:41
琥珀色和inspectorG4dget,我寫了這樣做的程序,但不能發佈它因爲我沒有足夠的聲望 - 有一段等待時間。明天早上我會發布解決方案。 – 2012-03-05 06:16:22