Scrapy SgmlLinkExtractor 无引用
我正在尝试让我的爬虫工作。以下是我在爬虫中的代码:
start_urls = ["http://www.khmer24.com/"]
rules = (
Rule(SgmlLinkExtractor(allow=(r'ad/\w+/67-\d+\.html',),
),
callback='parse_items'),
)
示例网址看起来是这样的:
http://www.khmer24.com/ad/honda-click-2012-98/67-258149.html
我想保留“ad”和“67-”这部分内容。
运行 scrapy crawl khmer24
的输出结果是:
Crawled (200) <GET http://www.khmer24.com/> (referer: None)
我搞不清楚为什么会这样。以下是我的完整代码:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
class MySpider(CrawlSpider):
name = "khmer24"
allowed_domains = ["khmer24.com"]
start_urls = ["http://www.khmer24.com/"]
rules = (
Rule(SgmlLinkExtractor(allow=(r'ad/\w+/67-\d+\.html',),
),
callback='parse_items'),
)
def parse_items(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select("//div[@class='innerbox']/h1/text()")
return(titles)
1 个回答
1
你的问题是:“为什么我的 referer 是 None?”
从你的日志输出中可以看到
Crawled (200) <GET http://www.khmer24.com/> (referer: None)
这行信息是来自于 start_urls
,而不是链接提取器。默认情况下,从 start_urls
发出的请求不会包含 referer 这个头信息。你可以通过自己发送请求来手动添加头信息,具体可以参考这个文档。