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

问题描述 投票:0回答:2

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

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)
python xpath web-crawler scrapy
2个回答
2
投票

你问的是两件事,

  1. 如何提取某些元素?

您提供的 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. 你如何处理找到的元素?

在 Scrapy 中,通常会创建一个

Item
类来保存您已废弃的数据,并按您定义的
Field
进行逻辑结构。

首先,您创建一个

Item
子类,其中包含
url
Field
,并在您的蜘蛛中,
return
yield
Item
的新实例,并将字段
url
设置为您在页面中找到的值。

将所有这些放在一起,

您必须创建一个

Item
,如此处所示:

import scrapy

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

然后,在蜘蛛中从

response
对象中提取所有有意义的数据。请查看此处的示例来感受一下。但一般来说你的代码会是这样的,

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)

0
投票

我需要基于关键字的网站完全相同的脚本拉取网址

© www.soinside.com 2019 - 2024. All rights reserved.