Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Scrapy:如何使用正则表达式跟踪页面上的多个链接_Python_Regex_Web Scraping_Scrapy - Fatal编程技术网

Python Scrapy:如何使用正则表达式跟踪页面上的多个链接

Python Scrapy:如何使用正则表达式跟踪页面上的多个链接,python,regex,web-scraping,scrapy,Python,Regex,Web Scraping,Scrapy,我有一个可以完美收集信息的刮板,但当我试图实现规则来抓取“下一页”时,我被卡住了。使用Scrapy 0.22(目前无法升级) scraper适用于start_url,比如页面上列出了许多文章,然后scraper将遵循get_article_links定义的链接并获取相关信息。但是,我希望能够转到下一页(其他页面的格式相同,url为 # 如何使用现有代码设置此设置?我需要两个单独的规则吗?或者我需要更改启动请求吗?在网站中可能有一个“下一步”按钮链接到下一页。您应该包括一个与该链接匹配的规则。将^

我有一个可以完美收集信息的刮板,但当我试图实现规则来抓取“下一页”时,我被卡住了。使用Scrapy 0.22(目前无法升级)

scraper适用于start_url,比如页面上列出了许多文章,然后scraper将遵循get_article_links定义的链接并获取相关信息。但是,我希望能够转到下一页(其他页面的格式相同,url为

#


如何使用现有代码设置此设置?我需要两个单独的规则吗?或者我需要更改启动请求吗?

在网站中可能有一个“下一步”按钮链接到下一页。您应该包括一个与该链接匹配的规则。

^http://www.example/news-perspective?key=&page=\d+$
不工作?
import re
import datetime
import dateutil 
import urllib2

from scrapy.http import Request
from scrapy.selector import Selector
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
from crawlers.spiders import BaseCrawler


class rappSpider(BaseCrawler):
    name = "rapp"

    base_url = "www.example.com"
    start_urls = [
        # "http://www.example.com/news-perspective",
        # "http://www.example.com/news-perspective?f[0]=field_related_topics%3A31366",
        "http://www.example/news-perspective?key=&page=%d"

    ]
    # rules = [
         # Rule(SgmlLinkExtractor(allow=r'?key=&page=[0-9]'), callback='get_article_links', follow= True)
     # ]

    TITLE_XPATH_SELECTOR= "//div[@id='inset-content']//h1/text()"

    TEXT_XPATH_SELECTOR = "//div[@class='field-item even']/p/text()"

    DATETIME_XPATH_SELECTOR = "//div[@class='field-items']/div/span/text()"

    def get_article_links(self, response, *args, **kwargs):
        html = Selector(response)
        link_extractor = SgmlLinkExtractor(allow=('http://www.example.com/news-perspective/\d{4}/\d{2}\/*\S*$',))

        is_relative_path = False
        yield [link.url for link in link_extractor.extract_links(response)], is_relative_path