Возникли проблемы со сценарием Scrapy (выбор ссылок) - PullRequest
0 голосов
/ 23 октября 2019

Я использую Scrapy и у меня проблемы со сценарием. Он отлично работает с оболочкой:

scrapy shell "www.redacted.com" Я использую response.xpath("//li[@a data-urltype()"]).extract

Я могу очистить около 200 ссылок со страницы.

Вот кодс веб-страницы, которую я пытаюсь почистить:

<a data-urltype="/view" data-mce-href="http://www.redacted.aspx?ID=xxxxxxxxxx" data-linktype="external" href="http://www.redacted.com/Home/wfContent.aspx?xxxxxxxxxxxxx" data-val="http://www.redacted.gov/Home/wfContent.aspx?xxxxxxxxxxxx" target="_blank">link text</a>    

Моя проблема в сценарии: (опубликовано ниже) Я знаю, что "a data-val" не так.

import scrapy
from ..items import LinkscrapeItem


class Linkscrape(scrapy.Spider):
    name = 'lnkscrapespider'
    start_urls = [
        'https://www.redacted.com'


    ]

    def parse(self, response):
        items = LinkscrapeItem()
        links = response.xpath("a data-val").xpath.extract()

        for links in links:
            items['links'] = links

            yield{
                'links': links
            }

Ответы [ 2 ]

1 голос
/ 23 октября 2019

Вам не нужно использовать .xpath() дважды:

links = response.xpath("//li/a/@data-val").extract()
# or
links = response.xpath("//li/a/@data-val").getall()

Также ниже не имеет смысла (может быть, вам нужно for link in links?):

for links in links:
    items['links'] = links

    yield{
        'links': links
    }
0 голосов
/ 23 октября 2019

, если вы собираетесь очистить data-val от a. используйте ниже xpath.

  links = response.xpath("//li/a/@data-val").xpath.extract()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...