[英]How to use meta to get data from all the links in a website
由於我是python新手,因此需要您的幫助。 我需要從網站中的所有鏈接中檢索數據。 我使用meta來進入鏈接並獲取數據。 當我使用我的代碼時,我只能從一個鏈接獲得。
import scrapy
from scrapy.spiders import CrawlSpider
from scrapy.selector import Selector
import urlparse
from alibaba.items import AlibabaItem
import mysql.connector
from mysql.connector import conversion
import re
class RedditCrawler(CrawlSpider):
name = 'baba'
allowed_domains = ['http://india.alibaba.com/']
start_urls = ['http://india.alibaba.com/supplier_list.htm?SearchText=automobile+parts&bizType=1']
custom_settings = {
'BOT_NAME': 'alibaba',
'DEPTH_LIMIT': 8,
'DOWNLOAD_DELAY': 0.5
}
def parse(self, response):
s = Selector(response)
next_link = s.xpath('//a[@class="next"]/@href').extract_first()
full_link = urlparse.urljoin('http://india.alibaba.com/',next_link)
yield self.make_requests_from_url(full_link)
item=AlibabaItem()
item['Name']=s.xpath('//div[@class="corp corp2"]//h2/a/text()').extract()
item['address']=s.xpath('//div[@class="value grcolor"]/text()').extract()
item['Annual_Revenue']=s.xpath('//div[@class="attrs"]//div[2]//div[@class="value"]//text()').extract()
item['Main_Markets']=s.xpath('//div[@class="attrs"]//div[3]//div[@class="value"]//text()').extract()
item['main_products']=s.xpath('//div[@class="value ph"]//text()').extract()
full_link1=s.xpath('//h2[@class="title ellipsis yrtil"]/a//@href').extract_first()
absolute_link = urlparse.urljoin('http://india.alibaba.com/',full_link1)
request_variable = scrapy.Request(absolute_link,callback=self.parse_website,dont_filter=True)
request_variable.meta['parcel_stuff'] = item
yield request_variable
def parse_website(self,response):
s = Selector(response)
item = response.meta['parcel_stuff']
item['Year_Established']=s.xpath('//table//tr[4]//td//a[@class="message-send mc-click-target"]//text()').extract()
yield item
您已將RedditCrawler基於CrawlSpider,而CrawlSpider已經具有自己的parse()。 將您的類更改為RedditCrawler(scrapy.Spider)。 文檔在這里 ,但重要的部分是
警告
編寫爬網蜘蛛規則時,請避免將解析用作回調,因為CrawlSpider使用解析方法本身來實現其邏輯。 因此,如果您覆蓋parse方法,則爬網蜘蛛將不再起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.