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.
Также это мой первый вопрос, пожалуйста, будьте любезны.