Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python抓取电子商务站点_Python_Python Requests - Fatal编程技术网

用python抓取电子商务站点

用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

当你发送任何产品链接(来自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/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
检测到你是一个机器人,所以他们不提供数据。要避免这种情况,请在代码中添加适当的
标题
睡眠
重试