Scrapy脚本,如何查找特定关键字并返回或打印网址

时间:2015-11-30 16:03:12

标签: python xpath web-crawler scrapy

好的,所以我必须完全编辑它。我有脚本部分工作,我可以毫无问题地启动它,这是脚本。粘贴链接位于:http://www.w3schools.com/tags/tag_ul.asp,您可以看到我在cmd行中获得的内容。我确定正在搜索的关键字是在那些链接中,因为我也尝试了其他单词,但它没有下载它们。

import scrapy

import requests
from scrapy.http import Request

import scrapy
from FinalSpider.items import Page  # Defined in items.py

URL = "http://url.com=%d"
starting_number = 60000
number_of_pages = 100
class FinalSpider(scrapy.Spider):
name = "FinalSpider"
allowed_domains = ['url.com']
start_urls = [URL % starting_number]

def __init__(self):
    self.page_number = starting_number
def start_request(self):
    # generate page IDs from 1000 down to 501
    for i in range (self.page_number, number_of_pages, -1):
        yield Request(url = URL % i, callback=self.parse)


def parse(self, response):
    for link in response.xpath('//a[text()="Amount"]/@href').extract():
        yield Page(url=link)

1 个答案:

答案 0 :(得分:2)

在这里你要问两件事,

  1. 如何提取一些元素?
  2. 您提供的 xpath response.xpath('//100.00()')是无效的xpath表达式。

    如果您想在文本中找到包含某些子字符串的a标记,例如<a href="something"> 100.00 </a>,则正确的xpath将为'//a[contains(text(), "100.00")]'。请注意使用contains,如果您有完全文本,则可以使用'//a[text() == "100.00"]'

    1. 你对找到的元素有什么看法?
    2. 在Scrapy中,习惯上创建一个Item类来保存您已经废弃的数据,逻辑结构由您定义的Field

      首先,您创建一个Item子类,其中包含url Field,并在您的蜘蛛中returnyield创建一个新实例Item将字段url设置为您在页面中找到的值。

      把所有这些放在一起,

      您必须创建Item,如图所示here

      import scrapy
      
      class Page(scrapy.Item):
          url = scrapy.Field()
      

      然后,在您的蜘蛛中提取response对象中的所有有意义的数据。查看示例here以获得感受。但一般来说,你的代码就像,

      import scrapy
      from myproject.items import Page  # Defined in items.py
      
      class MySpider(scrapy.Spider):
          [...]
      
          def parse(self, response):
              for link in response.xpath('//a[text()="100.00"]/@href').extract():
                  yield Page(url=link)