用python抓取电子商务站点
当你发送任何产品链接(来自myntra、amazon、flipkart)时,我正在创建一个电报机器人。当它的价格下降时,它会向用户发送消息,这是我从flipkart和myntra那里获取价格的代码用python抓取电子商务站点,python,python-requests,Python,Python Requests,当你发送任何产品链接(来自myntra、amazon、flipkart)时,我正在创建一个电报机器人。当它的价格下降时,它会向用户发送消息,这是我从flipkart和myntra那里获取价格的代码 import requests from bs4 import BeautifulSoup URL = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports- sandals/90242
import requests
from bs4 import BeautifulSoup
URL = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports-
sandals/9024251/buy'
head = {"user_agents":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like
Gecko) Chrome/79.0.3945.88 Safari/537.36'}
page = requests.get(URL, headers=head)
soup = BeautifulSoup(page.content, "html.parser")
name = str(BeautifulSoup(page.content, 'html.parser')).split(".")
test_name = BeautifulSoup(page.content, 'html.parser').get_text()
if "flixcart" in name:
title = soup.find(class_={"_35KyD6"}).get_text()
price = soup.find(class_={"_1vC4OE _3qQ9m1"}).get_text()
print(title)
print(price)
if "myntra" in name:
price = soup.find(class_={"pdp-price"})
name = soup.find(class_={"pdp-name"})
#title = soup.find("div class=\"pdp-price-info\"")
print(price)
这里的代码可以从flipkart中提取价格和名称,但myntra除外
在“价格”和“名称”中,它不显示任何类型
我想获得图像中突出显示的名称
使用
JSON
中的Javascript
动态填充页面数据。但是JSON
不会通过XHR
加载。您可以在HTML
中找到JSON
,您可以使用Regex
提取JSON
,并将JSON
转换为Dictionary
import re
import json
import requests
url = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports-sandals/9024251/buy'
headers = {"user_agents":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
response = requests.get(url, headers=headers)
match = re.findall(r"<script>window.__myx = (.+?)</script>", response.text)
json_data = json.loads(match[0])
product_name = json_data['pdpData']['name']
mrp = json_data['pdpData']['price']['mrp']
selling_price = json_data['pdpData']['price']['discounted']
print('ProductName:', product_name)
print('MRP:', mrp)
print('SellingPrice:', selling_price)
使用
JSON
中的Javascript
动态填充页面数据。但是JSON
不会通过XHR
加载。您可以在HTML
中找到JSON
,您可以使用Regex
提取JSON
,并将JSON
转换为Dictionary
import re
import json
import requests
url = 'https://www.myntra.com/sports-sandals/roadster/roadster-men-charcoal-grey-sports-sandals/9024251/buy'
headers = {"user_agents":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'}
response = requests.get(url, headers=headers)
match = re.findall(r"<script>window.__myx = (.+?)</script>", response.text)
json_data = json.loads(match[0])
product_name = json_data['pdpData']['name']
mrp = json_data['pdpData']['price']['mrp']
selling_price = json_data['pdpData']['price']['discounted']
print('ProductName:', product_name)
print('MRP:', mrp)
print('SellingPrice:', selling_price)
谢谢,它成功了,但是在运行代码几次之后,flipkart部分出现了一个新问题,它以
price
和title
的方式发送NoneType
我如何解决这个问题,或者我应该像处理myntra一样处理flipkart,或者其他类似的工作。请分享flipkart的URL
第节
,使用任何flipkart产品网站,它会为某些特定的重试次数提供正确的结果,但在此之后,它会开始提供非类型值,与amazon相同,但我没有在stackoveflow上包含amzon的代码,但你可以在这一网站上找到它。flipkart
而且Amazon
检测到你是一个机器人,所以他们不提供数据。为避免这种情况,请添加适当的标题
,sleep
和retry
在您的代码中。谢谢,它起作用了,但是在flipkart部分中出现了一个新问题,在运行了几次代码后,它发送price
和title
作为NoneType
我如何解决这个问题,或者我应该像处理myntra一样处理flipkart,或者做任何其他类似的工作共享flipkart部分的URL
,使用任何flipkart产品网站,它会为某些特定的重试次数提供正确的结果,但在此之后,它会开始提供非类型值,与amazon相同,但我没有在stackoveflow上包含amzon的代码,但你可以在这一网站上找到它。flipkart
而且Amazon
检测到你是一个机器人,所以他们不提供数据。要避免这种情况,请在代码中添加适当的标题
、睡眠
和重试
。