Я сейчас нахожусь в процессе изучения лоскутков и строю простой скребок сайта по недвижимости.С помощью этого кода я пытаюсь очистить все URL-адреса для списка недвижимости определенного города.Я столкнулся со следующей ошибкой с моим кодом - «Невозможно смешать аргументы str и non-str».
Я полагаю, что я выделил свою проблему для следующей части моего кода
props = response.xpath('//div[@class = "address ellipsis"]/a/@href').extract()
Если я использую функцию extract_first () вместо функции extract в назначении props xpath, вид кодаработ.Он захватывает первую ссылку для свойства на каждой странице.Тем не менее, это в конечном итоге не то, что я хочу.Я полагаю, что у меня правильный вызов xpath, так как код выполняется, если я использую метод extract_first ().
Может кто-нибудь объяснить, что я делаю здесь неправильно?Я перечислил мой полный код ниже
import scrapy
from scrapy.http import Request
class AdvancedSpider(scrapy.Spider):
name = 'advanced'
allowed_domains = ['www.realtor.com']
start_urls = ['http://www.realtor.com/realestateandhomes-search/Houston_TX/']
def parse(self, response):
props = response.xpath('//div[@class = "address ellipsis"]/a/@href').extract()
for prop in props:
absolute_url = response.urljoin(props)
yield Request(absolute_url, callback=self.parse_props)
next_page_url = response.xpath('//a[@class = "next"]/@href').extract_first()
absolute_next_page_url = response.urljoin(next_page_url)
yield scrapy.Request(absolute_next_page_url)
def parse_props(self, response):
pass
Пожалуйста, дайте мне знать, если я могу что-то уточнить.