我试图了解Scrapy的工作原理,但无法弄清楚如何让它爬行。
我希望抓取的网站有一个页面http://www.example.com/Jason,其中包含http://www.example.com/Jason:Aron,http://www.example.com/Jason:Dan_De等格式的链接。
我设法抓取http://www.example.com/Jason:Aron这样的网页上的文字,但我无法从http://www.example.com/Jason开始抓取并抓取所有链接的网页。
这是我的蜘蛛:
from scrapy.contrib.spiders import CrawlSpider, Rule
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.selector import Selector
from tutorial.items import Item
class Spider(CrawlSpider):
name = "text"
allowed_domains = ["example.com"]
start_urls = [
"http://www.example.com/Jason",
"http://www.example.com/Jason:Aron",
]
rules = (Rule (SgmlLinkExtractor(allow=('Jason:*')), callback='parse'),)
def parse(self, response):
sel = Selector(response)
sites = sel.xpath('//div[@class="textbox"]')
items = []
for site in sites:
item = Item()
item['text'] = site.xpath('text()').extract()
items.append(item)
return items
任何建议表示赞赏。
答案 0 :(得分:0)
当您使用CrawlSpider
时,最好不要覆盖parse()
方法:
编写爬网蜘蛛规则时,请避免使用parse作为回调,因为CrawlSpider使用parse方法本身来实现其逻辑。因此,如果您覆盖解析方法,则爬网蜘蛛将不再起作用。
将callback="parse"
更改为callback="parse_item"
,然后重试。