Логика очистки Python в поиске Google - PullRequest
0 голосов
/ 24 апреля 2019
from scrapy.selector import Selector
import requests,re


def parse_google(item,x=1):
    # item["Name"]="Cookware Set 12-Piece Black"
    # item["Name"]= "Zipit Jumbo Pencil Case - Orange"

    sellers=["target","ebay","homedepot"]   
    google_search_url= 'https://google.com/search?hl={}&q={}'.format('en', item["Name"].replace(" ","%20"))

    response = requests.get(google_search_url,headers={'user-agent':'Mozilla/5.0'})
    rows=Selector(response).xpath('//div[@class="g"]')
    for row in rows:
        try:
            needed_text = row.xpath('div/div[@class="rc"]/div[@class="s"]/div/div[@class="slp f"]/text()').extract_first().encode("utf-8").decode("ascii","ignore")
            domain = row.xpath('div/div[@class="rc"]/div[@class="r"]/a/@href').extract_first()
            for seller in sellers:
                if seller in domain:
                    Merchant = seller.title()
                    break
                else:
                    Merchant=None
            if "$" in needed_text and Merchant is not None:             
                text=needed_text
                price = re.search('.*\$(.*)-',text).groups().replace(" ","").replace(",","").replace(";","")
                if "in stock" in text.lower():
                    stock = True
                elif "out of stock" in text.lower():
                    stock = False
                else:
                    stock = "Not determined"
                item["Merchant %d"%x] = Merchant
                item["Merchant %d Price"%x] = price
                item["Merchant %d link"%x] = domain
                item["Stock %d"%x] = stock
                x+=1
        except AttributeError:
            pass
    next_page = Selector(response).xpath('//a[@id="pnnext"]/@href').extract_first()

Привет, я написал следующую функцию, мне нужна некоторая логика, я пытаюсь найти только первых двух продавцов из поиска Google, в котором есть продукт и цена для него.и я хочу найти только первые две страницы и заполнить словарь item, если продавец не найден item поля "N / a".

т.е. найти первых двух торговцев в только первые две страницы, если они не найдены, заполните поля "N / a", если обе страницы находятся на странице 1, нет необходимости на странице 2.

Также это мой первый вопрос, пожалуйста, будьте любезны.

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