Я использую Scrapy для получения некоторых данных из базы данных iTunes 'AppStore. Я начинаю с этого списка приложений: http://itunes.apple.com/us/genre/mobile-software-applications/id36?mt=8
В следующем коде я использовал простейшее регулярное выражение, предназначенное для всех приложений в магазине США.
from scrapy.contrib.linkextractors.sgml import SgmlLinkExtractor
from scrapy.contrib.spiders import CrawlSpider, Rule
class AppStoreSpider(CrawlSpider):
domain_name = 'itunes.apple.com'
start_urls = ['http://itunes.apple.com/us/genre/mobile-software-applications/id6015?mt=8']
rules = (
Rule(SgmlLinkExtractor(allow='itunes\.apple\.com/us/app'),
'parse_app', follow=True,
),
)
def parse_app(self, response):
....
SPIDER = AppStoreSpider()
Когда я запускаю его, я получаю следующее:
[itunes.apple.com] DEBUG: Crawled (200) <GET http://itunes.apple.com/us/genre/mobile-software-applications/id6015?mt=8> (referer: None)
[itunes.apple.com] DEBUG: Filtered offsite request to 'itunes.apple.com': <GET http://itunes.apple.com/us/app/bloomberg/id281941097?mt=8>
Как вы можете видеть, когда он начинает сканировать первую страницу, он говорит: «Отфильтрован внешний запрос на itunes.apple.com». и тогда паук останавливается ..
он также возвращает это сообщение:
[ScrapyHTTPPageGetter,client] /usr/lib/python2.5/cookielib.py:1577: exceptions.UserWarning: cookielib bug!
Traceback (последний вызов был последним):
Файл "/usr/lib/python2.5/cookielib.py", строка 1575, в make_cookies
parse_ns_headers (ns_hdrs), запрос)
Файл "/usr/lib/python2.5/cookielib.py", строка 1532, в _cookies_from_attrs_set
cookie = self._cookie_from_cookie_tuple (tup, request)
Файл "/usr/lib/python2.5/cookielib.py", строка 1451, в _cookie_from_cookie_tuple
если версия не None: версия = int (версия)
ValueError: недопустимый литерал для int () с основанием 10: '"1"'
Я использовал тот же скрипт для другого сайта, и у меня не было этой проблемы.
Есть предложения?