Я использую scrapy .24.4, я пытаюсь очистить некоторую информацию от threatexpert, и я почти получил ее, я могу захватить всю информацию на всех страницах ЗА ИСКЛЮЧЕНИЕМ первой страницы (или start_url). Я пробовал parse_start_url и добавляю Правила и просто не могу заставить его работать. Я уверен, что это просто то, что я забыл, но я смотрел на все выходные и просто нуждался в перерыве. Я был бы признателен, если бы у кого-нибудь были какие-либо предложения и т. Д. О, я получил его, чтобы работать с диапазоном в start_url, но он выглядел немного неэлегантным, и я пытаюсь научиться правильному пути. Спасибо заранее!!scurs parsing first page
import scrapy
import re
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from threatexpert.items import ThreatExpert
import urlparse
class ThreatExpertSpider(scrapy.Spider):
name = 'threatexpert'
start_urls = ["http://www.threatexpert.com/reports.aspx?tf=2&sl=1"]
def parse(self, response):
print '++++++++++++++++++++++++pull all page links+++++++++++++++++++++++'
urls = response.xpath('//a[contains(@href, "page")]/@href').extract()
for url in urls:
url = urlparse.urljoin(response.url, url)
self.log('Found follow url: %s' % url)
yield scrapy.Request(url, callback = self.parse_links)
def parse_links(self, response):
print '++++++++++++++++++++++++pull item urls++++++++++++++++++++++++++'
urls = response.xpath('//a[contains(@href, "md5")]/@href').extract()
for url in urls:
url = urlparse.urljoin(response.url, url)
self.log('Found follow url: %s' % url)
yield scrapy.Request(url, callback = self.parse_items)
def parse_items(self, response):
self.log("Hi, this is an item page! %s" % response.url)
item = ThreatExpert()
item['md5'] = response.xpath('//html/body/ul[1]/ul/ul/li[1]/text()').re(r"File MD5: ([\w, ]+)")
yield item