scrap crawlspider "deny" Неверные настройки - PullRequest
0 голосов
/ 27 июня 2019

Rule(LinkExtractor(allow=rule.get("allow", None), restrict_xpaths=rule.get("restrict_xpaths", ""),deny=('guba','f10','data','fund.*?\.eastmoney\.com/\d+\.html','quote','.*so\.eastmoney.*','life','/gonggao/')),callback=rule.get("callback", ""),follow=rule.get('follow',True))

Настройка правила ↑

запущенных журналов:

2019-06-27 10:33:24 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://guba.eastmoney.com/list,of166401.html> (referer: http://fund.eastmoney.com/LOF_jzzzl.html)
2019-06-27 10:33:24 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://guba.eastmoney.com/list,of164206.html> (referer: http://fund.eastmoney.com/LOF_jzzzl.html)
2019-06-27 10:33:24 [scrapy.core.engine] DEBUG: Crawled (200) <GET http://guba.eastmoney.com/list,of161823.html> (referer: http://fund.eastmoney.com/LOF_jzzzl.html)```

**My settings didn't work** help

1 Ответ

0 голосов
/ 27 июня 2019

Из документации:

deny (регулярное выражение (или список)) - одно регулярное выражение (или список регулярных выражений), которому (абсолютные) URL-адреса должны соответствовать, чтобы быть исключенными (т. Е. Не извлеченными). Он имеет приоритет над параметром allow. Если он не указан (или пуст), он не исключит никаких ссылок.

https://doc.scrapy.org/en/latest/topics/link-extractors.html#module-scrapy.linkextractors.lxmlhtml

Это означает, что deny - это список регулярных выражений, которые должны соответствовать url. Шаблоны, определенные в вашем коде, не совпадают с URL-адресами, которые вы сканируете - вам нужно добавить символы подстановки в начале и конце, если вы хотите, чтобы содержал сортировку соответствия:

 $ ptpython                                                                                                            
>>> import re                                                                                                         
>>> url = "http://guba.eastmoney.com/list,of161823.html"                                                              
>>> re.match('guba', url)                                                                                             
>>> re.match('.+guba.+', url)                                                                                         
<re.Match object; span=(0, 44), match='http://guba.eastmoney.com/list,of161823.html'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...