Scrapy пытается вычеркнуть названия компаний в Python - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь очистить раздел для каждого бизнеса в желтых страницах.Я очень плохо знаком с использованием скрапа и во второй день.Я использую запросы, чтобы получить реальный URL для поиска с пауком.Что я делаю не так с моим кодом?Я хочу, чтобы в конечном итоге скрап пошел в каждый бизнес и вычистил его адрес и другую информацию.

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

search = "Plumbers"
location = "Hammond, LA"
url = "https://www.yellowpages.com/search"
q = {'search_terms': search, 'geo_location_terms': location}
page = requests.get(url, params=q)
page = page.url

class YellowpagesSpider(scrapy.Spider):
    name = 'quotes'
    allowed_domains = ['yellowpages.com']
    start_urls = [page]

    def parse(self, response):
        self.log("I just visited: " + response.url)
        items = response.css('span.text::text')
        for items in items:
            print(items)

1 Ответ

0 голосов
/ 12 сентября 2018

Для получения имени используйте:

response.css('a[class=business-name]::text')

Для получения href используйте:

response.css('a[class=business-name]::attr(href)')

В последнем звонке это выглядит так:

    for bas in response.css('a[class=business-name]'):
        item = { 'name' : bas.css('a[class=business-name]::text').extract_first(),
                  'url' : bas.css('a[class=business-name]::attr(href)').extract_first() }
        yield item

Результат:

2018-09-13 04:12:49 [quotes] DEBUG: I just visited: https://www.yellowpages.com/search?search_terms=Plumbers&geo_location_terms=Hammond%2C+LA
2018-09-13 04:12:49 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.yellowpages.com/search?search_terms=Plumbers&geo_location_terms=Hammond%2C+LA>
{'name': 'Roto-Rooter Plumbing & Water Cleanup', 'url': '/new-orleans-la/mip/roto-rooter-plumbing-water-cleanup-21804163?lid=149760174'}
2018-09-13 04:12:49 [scrapy.core.scraper] DEBUG: Scraped from <200 https://www.yellowpages.com/search?search_terms=Plumbers&geo_location_terms=Hammond%2C+LA>
{'name': "AJ's Plumbing And Heating Inc", 'url': '/new-orleans-la/mip/ajs-plumbing-and-heating-inc-16078566?lid=1001789407686'}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...