Python Scrapy爬虫跟踪包含关键字的链接
我有一个很好用的刮擦式网络扫描器。但是,我想让它只关注包含特定关键字或短语的链接。我以为我已经弄明白了,但我的输出不正确Python Scrapy爬虫跟踪包含关键字的链接,python,scrapy,web-crawler,output,Python,Scrapy,Web Crawler,Output,我有一个很好用的刮擦式网络扫描器。但是,我想让它只关注包含特定关键字或短语的链接。我以为我已经弄明白了,但我的输出不正确 from scrapy.selector import HtmlXPathSelector from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from scrapy.utils.url import urljoin_rfc from webc
from scrapy.selector import HtmlXPathSelector
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from scrapy.utils.url import urljoin_rfc
from webcrawler.items import SitegraphItem
class GraphspiderSpider(CrawlSpider):
name = "examplespider"
custom_settings = {
'DEPTH_LIMIT': '2',
}
allowed_domains = []
start_urls = (
'http://www.example.com/products/',
)
rules = (
Rule(LinkExtractor(allow=r'/'), callback='parse_item', follow=True),
)
def parse_item(self, response):
hxs = HtmlXPathSelector(response)
i = SitegraphItem()
i['url'] = response.url
# i['http_status'] = response.status
llinks=[]
for anchor in hxs.select('//a[text()="keyword"]/@href'):
href=anchor.select('@href').extract()[0]
if not href.lower().startswith("javascript"):
llinks.append(urljoin_rfc(response.url,href))
i['linkedurls'] = llinks
return i
def _response_downloaded(self, response):
filename = response.url.split("/")[-1] + '.html'
with open(filename, 'wb') as f:
f.write(response.body)
rule = self._rules[response.meta['rule']]
return self._parse_response(response, rule.callback, rule.cb_kwargs, rule.follow)
我在hxs.select段中添加了“keyword”语句,但这显然是不正确的。我不确定如何让关键字正常工作。看看是否可以使用属性实现链接过滤逻辑
否则,请使用
Spider
而不是CrawlSpider
<代码>爬行蜘蛛仅对其支持的有限用例有用<代码>爬行器适用于所有用例。我不太熟悉爬行器和爬行器之间的区别。根据上面的代码,我可以很容易地将其修改为Spider吗?我相信完成此操作应该会让您对Spider
有足够的了解,是的。