Python: 列出一个没有索引的网站的所有网址
Python: listing all the URLs of a website without index
我可以单独访问以下每个 URL:http://www.example.com/{.*}.html
然而,对主页 http://www.example.com
的访问受到某种限制,我被重定向到一个错误页面,显示:Erreur 403 - Refus de traitement de la requête (Interdit - Forbidden)
.
有没有办法列出该域下托管的 HTML 个页面的所有 URL?
简短的回答是否定的。您不能像列出目录那样只列出该域中的所有 HTML 页面。假设网站的 robots.txt 允许,最好的办法是使用网络抓取模块来抓取网站,例如 http://scrapy.org/
感谢 Brian:我设法从域下托管的可访问 HTML 页面列表开始抓取。
# scrap.py
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = [
'http://www.example.com/***.html' # Accessible URL
]
rules = (
Rule(LinkExtractor(allow=('\.html', )), callback='parse_item', follow=True),
)
def parse_item(self, response):
print response.url
然后:
$ scrapy runspider scrap.py > urls.out
我可以单独访问以下每个 URL:http://www.example.com/{.*}.html
然而,对主页 http://www.example.com
的访问受到某种限制,我被重定向到一个错误页面,显示:Erreur 403 - Refus de traitement de la requête (Interdit - Forbidden)
.
有没有办法列出该域下托管的 HTML 个页面的所有 URL?
简短的回答是否定的。您不能像列出目录那样只列出该域中的所有 HTML 页面。假设网站的 robots.txt 允许,最好的办法是使用网络抓取模块来抓取网站,例如 http://scrapy.org/
感谢 Brian:我设法从域下托管的可访问 HTML 页面列表开始抓取。
# scrap.py
from scrapy.spiders import CrawlSpider, Rule
from scrapy.linkextractors import LinkExtractor
class MySpider(CrawlSpider):
name = 'example.com'
allowed_domains = ['example.com']
start_urls = [
'http://www.example.com/***.html' # Accessible URL
]
rules = (
Rule(LinkExtractor(allow=('\.html', )), callback='parse_item', follow=True),
)
def parse_item(self, response):
print response.url
然后:
$ scrapy runspider scrap.py > urls.out