[英]How to mention link extractor rules when using BaseSpider in scrapy
[英]Writing a crawler to parse a site in scrapy using BaseSpider
我對如何設計爬蟲的結構感到困惑。
我在哪里搜尋
我有以下代碼:
def parse_page(self, response):
hxs = HtmlXPathSelector(response)
sites = hxs.select('//ol[@id=\'result-set\']/li')
items = []
for site in sites[:2]:
item = MyProduct()
item['product'] = myfilter(site.select('h2/a').select("string()").extract())
item['product_link'] = myfilter(site.select('dd[2]/').select("string()").extract())
if item['profile_link']:
request = Request(urljoin('http://www.example.com', item['product_link']),
callback = self.parseItemDescription)
request.meta['item'] = item
return request
soup = BeautifulSoup(response.body)
mylinks= soup.find_all("a", text="Next")
nextlink = mylinks[0].get('href')
yield Request(urljoin(response.url, nextlink), callback=self.parse_page)
問題是我有兩個return語句:一個用於request
,一個用於yield
。
在抓取蜘蛛中,我不需要使用最后一個yield
,因此一切都很好,但是在BaseSpider
我必須手動跟蹤鏈接。
我該怎么辦?
作為初始階段(並根據您對自己想做的評論),我建議您看一下CrawlSpider代碼 ,以了解如何實現其功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.