Scrapy 脚本,如何查找特定关键字和 return 或打印 url

Scrapy script , how to find specific keyword and return or print url

好的,所以我必须完全编辑它。我已经让脚本部分工作了,我可以毫无问题地启动它,这是脚本。粘贴 link 在这里:http://pastebin.com/SKa5Wh1h 你可以看到我在 cmd 行中得到了什么。我确定正在搜索的关键字在那些 link 中,因为我也尝试了其他词,但它没有下载它们。

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. 如何提取一些元素?

您提供的 xpath response.xpath('//100.00()') 是无效的 xpath 表达式。

如果您想在文本中找到带有某些子字符串的 a 标签,例如 <a href="something"> 100.00 </a>,正确的 xpath 应该是 '//a[contains(text(), "100.00")]'。注意 contains 的使用,如果你有 exact 文本,你可以使用 '//a[text() == "100.00"]'.

  1. 你对找到的元素有什么看法?

在 Scrapy 中,通常会创建一个 Item class 来保存您已废弃的数据,逻辑结构由您定义的 Field 组成。

所以首先,你创建一个 Item subclass,带有 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)