Получить весь текст ссылки и ссылки на странице, используя scrapy - PullRequest
0 голосов
/ 20 сентября 2019
class LinkSpider(scrapy.Spider):
    name = "link"
    def start_requests(self):
        urlBasang = "https://bloomberg.com"
        yield scrapy.Request(url = urlBasang, callback = self.parse)
    def parse(self, response):
        newCsv = open('data_information/link.csv', 'a')
        for j in response.xpath('//a'):

            title_to_save = j.xpath('/text()').extract_first()
            href_to_save= j.xpath('/@href').extract_first()

            print("test")

            print(title_to_save)
            print(href_to_save)

            newCsv.write(title_to_save+ "\n")
        newCsv.close()

это мой код, но title_to_save и href_to_save возвращают None

Я хочу получить весь текст внутри тега "a" и его href

1 Ответ

1 голос
/ 20 сентября 2019

Вы хотите

title_to_save = j.xpath('./text()').get()
href_to_save= j.xpath('./@href').get()

Обратите внимание на точку перед путем (я использую get вместо extract_first из-за this ).

Навыведите csv, возможно, вы в курсе, но вам, вероятно, следует yield информацию, которую вы хотите записать, а затем запустить свой паук, используя опцию -o data_information/link.csv, которая немного более гибкая, чем открытие файла для добавления в ваш метод parse,Таким образом, ваш код будет выглядеть примерно так:

class LinkSpider(scrapy.Spider):
    name = "link"
    # No need for start_requests for as this is the default anyway
    start_urls = ["https://bloomberg.com"]  

    def parse(self, response):
        for j in response.xpath('//a'):

            title_to_save = j.xpath('./text()').get()
            href_to_save= j.xpath('./@href').get()

            print("test")
            print(title_to_save)
            print(href_to_save)

            yield {'title': title_to_save}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...