Элементы не печатающие на терминале Scrapy Python - PullRequest
0 голосов
/ 21 марта 2020

Я пытаюсь очистить эту страницу, используя Scrapy (https://www.medicregister.com/USA/list/suppliers.asp). Я следовал за каждой ссылкой Но, я только получаю телефон правильно. Два других элемента "Name" и "Email" печатаются неправильно. Для Name он печатает "None", а для "Email" он печатает только перед знаком @. Я думаю, что я не использую правильный xpath, но в Chrome это показывает, что на самом деле xPath - это элемент, на который я пытаюсь нацелиться. Я использую "Anaconda Virtual Environment". Пожалуйста, помогите мне с этим. Код следующий:

# -*- coding: utf-8 -*-
import scrapy
import logging

class Dgoodyman16Spider(scrapy.Spider):
    name = 'dgoodyman16'
    allowed_domains = ['www.medicregister.com']
    start_urls = ['https://www.medicregister.com/USA/list/suppliers.asp']

    def parse(self, response):
        all_lists = response.xpath('//a[@class="TopicHeaderSupplier"]')
        for lists in all_lists:
            title = lists.xpath('.//text()').get()
            links = lists.xpath('.//@href').get()


            yield response.follow(url=links, callback=self.parse_lists)

    def parse_lists(self, response):
        # contact name xpath: (//div[@class="vcard"]/b)[1]
        # contact phone xpath: //span[@class="tel"]
        # contact email xpath: (//noscript)[1]

        contact_name = response.xpath('(//div[@class="vcard"]/b)[1]/text()').get()
        phone = response.xpath('//span[@class="tel"]/text()').get()
        email = response.xpath('(//noscript)[1]/text()').get()


        yield {
            'Contact Name': contact_name,
            'Phone': phone,
            'Email': email
        }

enter image description here

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