Zey*_*nel 10 python web-crawler scrapy
请在Scrapy文档中查看此蜘蛛示例.解释是:
这个蜘蛛会开始抓取example.com的主页,收集类别链接和项链接,使用parse_item方法解析后者.对于每个项目响应,将使用XPath从HTML中提取一些数据,并且将使用它填充项目.
我完全复制了同一个蜘蛛,并将"example.com"替换为另一个初始URL.
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import HtmlXPathSelector
from scrapy.item import Item
from stb.items import StbItem
class StbSpider(CrawlSpider):
domain_name = "stb"
start_urls = ['http://www.stblaw.com/bios/MAlpuche.htm']
rules = (Rule(SgmlLinkExtractor(allow=(r'/bios/.\w+\.htm', )), callback='parse', follow=True), )
def parse(self, response):
hxs = HtmlXPathSelector(response)
item = StbItem()
item['JD'] = hxs.select('//td[@class="bodycopysmall"]').re('\d\d\d\d\sJ.D.')
return item
SPIDER = StbSpider()
Run Code Online (Sandbox Code Playgroud)
但是我的蜘蛛"stb"并没有收集"/ bios /"的链接,因为它应该这样做.它运行初始URL,擦除item['JD']并将其写入文件然后退出.
为什么SgmlLinkExtractor被忽略了?在Rule读,因为它抓住了里面的语法错误Rule行.
这是一个错误吗?我的代码中有什么问题吗?除了我在每次运行中看到的一堆未处理错误外,没有任何错误.
很高兴知道我在这里做错了什么.谢谢你的任何线索.我误解了该怎么SgmlLinkExtractor办?