Я пытаюсь очистить эту страницу, используя 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
}