Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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_Xpath_Web Scraping - Fatal编程技术网

Python 从网页中删除移动规范

Python 从网页中删除移动规范,python,xpath,web-scraping,Python,Xpath,Web Scraping,我正试图获得网页上列出的所有手机的详细信息,如名称、价格和规格。我成功地得到了名字和价格,而且因为规格太乱了。有24个手机列表,当我尝试获取规格时,它将所有规格都放在一个列表中。我无法找到一种合适的方法,根据它们所属的手机来区分它们。任何帮助都将受到感谢。下面是函数定义- def get_link(self,link): page = requests.get(link) tree = html.fromstring(page.content) name = tree.x

我正试图获得网页上列出的所有手机的详细信息,如名称、价格和规格。我成功地得到了名字和价格,而且因为规格太乱了。有24个手机列表,当我尝试获取规格时,它将所有规格都放在一个列表中。我无法找到一种合适的方法,根据它们所属的手机来区分它们。任何帮助都将受到感谢。下面是函数定义-

def get_link(self,link):
    page = requests.get(link)
    tree = html.fromstring(page.content)
    name = tree.xpath("//div[@class='_3wU53n']/text()")
    print name
    time.sleep(5)
    price = tree.xpath("//div[@class='_1vC4OE _2rQ-NK']/text()")[1::2]
    print price      
    time.sleep(5)
    highlights = tree.xpath("//ul[@class='vFw0gD']/li/text()")
    print highlights


'''
    dictionary={}
    for i in range(len(name)):
        dictionary[name[i]]=price[i]
    print dictionary


    return
'''
通过的链接是——

到目前为止,产量是-

['Mi A1 (Black, 64 GB)', 'Redmi Note 4 (Gold, 32 GB)', 'Mi A1 (Rose Gold, 64 GB)', 'Redmi Note 4 (Gold, 64 GB)', 'Redmi Note 4 (Black, 32 GB)', 'Honor 9i (Graphite Black, 64 GB)', 'Redmi Note 4 (Black, 64 GB)', 'Moto E4 Plus (Fine Gold, 32 GB)', 'Moto E4 Plus (Iron Gray, 32 GB)', 'Intex Aqua 5.5 VR (Champagne, White, 8 GB)', 'Lenovo K8 Plus (Venom Black, 32 GB)', 'Redmi Note 4 (Dark Grey, 64 GB)', 'Panasonic Eluga Ray (Gold, 16 GB)', 'Moto C Plus (Pearl White, 16 GB)', 'Moto C Plus (Starry Black, 16 GB)', 'Moto C Plus (Fine Gold, 16 GB)', 'Lenovo K8 Plus (Fine Gold, 32 GB)', 'Panasonic Eluga Ray 700 (Champagne Gold, 32 GB)', 'Panasonic Eluga I5 (Gold, 16 GB)', 'OPPO F5 (Black, 64 GB)', 'Lenovo K8 Plus (Fine Gold, 32 GB)', 'Moto X4 (Super Black, 64 GB)', 'Swipe ELITE Sense- 4G with VoLTE', 'Swipe ELITE Sense- 4G with VoLTE']


['14,999', '9,999', '14,999', '11,999', '9,999', '17,999', '11,999', '9,999', '9,999', '4,499', '9,999', '11,999', '6,999', '6,999', '6,999', '6,999', '9,999', '9,999', '6,499', '24,990', '10,999', '22,999', '5,555', '5,555']


['4 GB RAM | 64 GB ROM | Expandable Upto 128 GB', '5.5 inch Full HD Display', '12MP + 12MP Dual Rear Camera | 5MP Front Camera', '3080 mAh Li-polymer Battery', 'Qualcomm Snapdragon 625 64 bit Octa Core 2GHz Processor', 'Android Nougat 7.1.2 | Stock Android Version', 'Android One Smartphone - with confirmed upgrades to Android Oreo and Android P', 'Brand Warranty of 1 Year Available for Mobile and 6 Months for Accessories', .....]

试试看。我认为这就是你的预期产出:

import requests
from bs4 import BeautifulSoup

res = requests.get('https://www.flipkart.com/mobiles/pr?count=40&otracker=categorytree&p=sort%3Dpopularity&sid=tyy%2C4io')
soup = BeautifulSoup(res.text, "lxml")
for items in soup.select("._1UoZlX"):
    name = items.select("._3wU53n")[0].text
    price = items.select("._1vC4OE._2rQ-NK")[0].text
    specifics = ' '.join([item.text for item in items.select(".tVe95H")])
    print("Name: {}\nPrice: {}\nSpecification: {}\n".format(name,price,specifics))
单导线的输出:

Name: Mi A1 (Black, 64 GB)
Price: ₹14,999
Specification: 4 GB RAM | 64 GB ROM | Expandable Upto 128 GB 5.5 inch Full HD Display 12MP + 12MP Dual Rear Camera | 5MP Front Camera 3080 mAh Li-polymer Battery Qualcomm Snapdragon 625 64 bit Octa Core 2GHz Processor Android Nougat 7.1.2 | Stock Android Version Android One Smartphone - with confirmed upgrades to Android Oreo and Android P Brand Warranty of 1 Year Available for Mobile and 6 Months for Accessories

@RomanPerekhrest现在可读吗先生,任何关于问题解决方案的帮助都会很有帮助..你执行代码了吗?反馈是什么?当有人试图解决你的问题时,至少要做出回应。谢谢。很抱歉回复太晚了,我的项目已经停止在网络上报废,所以不再使用它了。但是谢谢你。成功了。