Использование scrapy для просмотра открытых URL-ссылок a-href для очистки соответствующих страниц - PullRequest
0 голосов
/ 29 мая 2019

Я только начинаю со Scrapy и Python, и следую учебному пособию, но застрял. Я смог использовать оболочку для получения списка ссылок со страницы, как показано ниже:

>>> response.css('li').xpath('a/@href').getall()

дает мне:

'/shop-online/542/fragrances', '/shop-online/81/vitamins', '/shop-online/257/beauty', '/shop-online/665/skin-care', '/shop-online/648/cosmetics', '/shop-online/517/weight-loss', '/shop-online/20/baby-care', '/shop-online/89/sexual-health', '/shop-online/198/smoking-deterrents', '/shop-online/3240/clearance', '/prescriptions', '/shop-online/258/medicines', '/shop-online/1093/cold-flu', '/shop-online/PS-1755/all-fish-oil-supplements', '/shop-online/159/oral-hygiene-and-dental-care', '/shop-online/792/household', '/shop-online/129/hair-care', '/shop-online/1255/sports-nutrition', '/bestsellers', '/categories', 'https://www.chemistwarehouse.hk', '/', '#', '/login', '/youraccount', '#', '/aboutus', '/aboutus/shipping', '/shop-online/542/fragrances', '/shop-online/81/vitamins', '/shop-online/257/beauty', '/shop-online/665/skin-care', '/shop-online/648/cosmetics', '/shop-online/517/weight-loss', '/shop-online/20/baby-care', '/shop-online/89/sexual-health', '/shop-online/198/smoking-deterrents', '/prescriptions', '/shop-online/258/medicines', '/shop-online/1093/cold-flu', '/shop-online/PS-1755/all-fish-oil-supplements', '/shop-online/159/oral-hygiene-and-dental-care', '/shop-online/792/household', '/shop-online/129/hair-care', '/shop-online/1255/sports-nutrition', '/bestsellers']

То, что я хочу сделать, по крайней мере пока использовать оболочку (и затем написать ее сценарий), это уметь анализировать любые ссылки, которые не содержат shop-online, а затем очищать соответствующие URL, это будет www..website / ссылка, которую я очистил

Но я не уверен, как это сделать. Я знаю, что есть выражения регулярных выражений, которые вы можете использовать, но я не уверен, как их применять, и даже если бы я мог, я не уверен, как потом сказать scrapy перебирать то, что я нашел, и очищать эти страницы ?

1 Ответ

0 голосов
/ 29 мая 2019

Я хочу […] разобрать все ссылки, которые не содержат shop-online, а затем очистить соответствующие URL-адреса

В обратном вызове паука это будет:

for link in response.xpath('//li//a/@href[contains(., "/shop-online/")]'):
    yield response.follow(link.get())

В оболочке вы можете обрабатывать только один запрос за раз, потому что он предназначен только для целей отладки, поэтому вы просто выбираете одну из ссылок и получаете ее:

link = response.xpath('//li//a/@href[contains(., "/shop-online/")]').get()  # Gets the first link only
fetch(response.follow(link))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...