Я пытаюсь загрузить данные из gsmarena. Пример кода для загрузки HTC one me spec представлен на следующем сайте «http://www.gsmarena.com/htc_one_me-7275.php», как указано ниже:Избегайте запрета на сайтах с использованием scrapy
Данные на веб-сайте классифицируются в виде таблиц и строк таблицы. Данные формата:
table header > td[@class='ttl'] > td[@class='nfo']
Items.py файла:
import scrapy
class gsmArenaDataItem(scrapy.Item):
phoneName = scrapy.Field()
phoneDetails = scrapy.Field()
pass
паук файл:
from scrapy.selector import Selector
from scrapy import Spider
from gsmarena_data.items import gsmArenaDataItem
class testSpider(Spider):
name = "mobile_test"
allowed_domains = ["gsmarena.com"]
start_urls = ('http://www.gsmarena.com/htc_one_me-7275.php',)
def parse(self, response):
# extract whatever stuffs you want and yield items here
hxs = Selector(response)
phone = gsmArenaDataItem()
tableRows = hxs.css("div#specs-list table")
for tableRows in tableRows:
phone['phoneName'] = tableRows.xpath(".//th/text()").extract()[0]
for ttl in tableRows.xpath(".//td[@class='ttl']"):
ttl_value = " ".join(ttl.xpath(".//text()").extract())
nfo_value = " ".join(ttl.xpath("following-sibling::td[@class='nfo']//text()").extract())
colonSign = ": "
commaSign = ", "
seq = [ttl_value, colonSign, nfo_value, commaSign]
seq = seq.join(seq)
phone['phoneDetails'] = seq
yield phone
Однако я получаю запрет, как только я пытаюсь даже загрузите страницу в scrapy shell, используя:
"http://www.gsmarena.com/htc_one_me-7275.php"
Я даже пытался использовать DOWNLOAD_DELAY = 3 в settings.py.
Просьба предложить, как мне это сделать.
Интересно ...Я попытался поиграть с веб-сайтом с помощью переключателя UserAgent, и теперь я не могу загрузить какие-либо страницы вообще! На этом сайте, вероятно, существует очень строгая политика запрета на использование пользователями своих IP-адресов, если они отображаются с любым видом UserAgent, который обозначает искателя, поэтому вы можете не загружать его на какое-то время. – FBidu