Выскабливание параметризованного URL с помощью скрапа - PullRequest
0 голосов
/ 31 марта 2011

У меня есть паук, работающий с использованием Python Scrapy, который очищает все страницы, кроме страниц с параметрами (например, & символы), такими как, http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294.

В журнале ошибок написано [scrapy] ERROR: xxx matching query does not exist.

Я использую CrawlSpider со следующим SgmlLinkExtractor rule

rules = (
       Rule(SgmlLinkExtractor(allow='[a-zA-Z0-9.:\/=_?&-]+$'),
            'parse',
            follow=True,
        ),
)

Буду очень признателен за ваше время и хотел бы иметь возможность поблагодарить вас заранее.

Ответы [ 2 ]

1 голос
/ 02 апреля 2011

Чтобы ответить на мой собственный ответ, весь мой код был в порядке. Причина, по которой это не помогло, в том, как я называю скрапом. Это ломается в &, поскольку я использовал одинарную кавычку. Использование двойной кавычки для вызова паука - решение.

0 голосов
/ 31 марта 2011

Ваше выражение соответствует URL в отношении re.serach().Вы пытались использовать r'regexpression', чтобы python рассматривал строку как необработанную строку?Похоже, что он совпадает как с необработанной, так и с обработанной строкой, но всегда лучше, чтобы python рассматривал регулярное выражение как необработанные строки.

>>> import re
>>> url="http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294" 
>>> m = re.search(r'[a-zA-Z0-9.:\/=_?&-]+$', url) 
>>> m.group()
'http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294'

>>> m = re.search('[a-zA-Z0-9.:\/=_?&-]+$', url)
>>> m.group()
'http://www.amazon.co.uk/gp/product/B003ZDXHSG/ref=s9_simh_gw_p23_d0_i3?pf_rd_m=A3P5ROKL5A1OLE&pf_rd_s=center-2&pf_rd_r=1NWN2VXCA63R7TDYC3KQ&pf_rd_t=101&pf_rd_p=467128533&pf_rd_i=468294'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...