我想使用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