【问题标题】:Using scrapy to find specific text from multiple websites使用 scrapy 从多个网站中查找特定文本
【发布时间】:2015-11-30 00:43:45
【问题描述】:

我想抓取/检查多个网站(在同一域上)以获取特定关键字。我找到了这个脚本,但我找不到如何添加要搜索的特定关键字。脚本需要做的是找到关键字,并给出找到它的链接的结果。谁能指出我可以在哪里阅读更多相关信息? 我一直在阅读scrapy's documentation,但我似乎找不到这个。

谢谢。

class FinalSpider(scrapy.Spider):
name = "final"
allowed_domains = ['example.com']
start_urls = [URL % starting_number]
def __init__(self):
    self.page_number = starting_number

def start_requests(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):
    **parsing data from the webpage**

【问题讨论】:

    标签: web web-crawler scrapy keyword extraction


    【解决方案1】:

    您需要使用一些解析器或正则表达式在响应正文中查找您要查找的文本。

    每个scrapy回调方法都包含response对象内的响应主体,您可以使用response.body检查(例如在parse方法内),然后您必须使用一些regex或更好xpathcss 选择器可以知道您抓取的页面的 xml 结构,从而转到您的文本路径。

    Scrapy 允许您使用response 对象作为选择器,因此您可以使用response.xpath('//head/title/text()') 转到页面标题。

    希望对您有所帮助。

    【讨论】:

    • 您好,具体的文字在页面中,是一个数字,比如100.00。我想我已经获得了 Xpath,但是,我似乎无法找到一种方法让它查找该特定文本并在文本中给我 url,所以我知道为该特定文本打开哪个 url?
    • 您想从文本中创建一个网址吗?为此,您只需要字符串操作。
    • eLRuLL,不,这不是我想要的。我想让 scrapy 访问这些网站,搜索那个特定的关键字,在 100 个网站中可能只有 2 个会有我需要的关键字,如果它找到那个关键字,那么我希望它把找到它的 url 返回给我。希望我现在更清楚了..
    • 好吧,你知道我怎么能限制scrapy在访问另外500页之前等待大约10-20秒?网页本身大多是基于文本的,但我只是不想被禁止或任何事情。
    • 即使快速发出 2 个请求也可能被禁止,所以 500 的想法不是一个好的选择,scrapy 有一种自动限制请求的方法,你只需要设置 @ 987654330@ 在您的设置中,我认为默认情况下为 True。
    猜你喜欢
    • 1970-01-01
    • 2017-08-15
    • 1970-01-01
    • 2016-03-11
    • 2019-02-22
    • 2016-04-23
    • 1970-01-01
    • 2011-01-24
    • 2016-09-07
    相关资源
    最近更新 更多