首页 > 编程语言 >Python如何爬取京东mac电脑的数据?全球HTTP代理应用

Python如何爬取京东mac电脑的数据?全球HTTP代理应用

时间:2023-06-17 17:01:49浏览次数:53  
标签:HTTP get Python price 爬取 html prices return

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_html


618要来了,不买点啥总觉得少了点什么,正好我用了5 6 年的电脑想换,这可不就来活了嘛!我们用Python也能简单获取某东上的mac电脑价格。

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_html_02

不整虚的,直接就是一个冲,来看代码:

import requests
from bs4 import BeautifulSoup

def get_jd_laptops():
    url = "https://search.jd.com/Search"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
    }
    params = {
        "keyword": "Mac 笔记本电脑",
        "enc": "utf-8",
        "qrst": "1",
        "rt": "1",
        "stop": "1",
        "vt": "2",
        "wq": "mac 笔记本电脑",
        "page": "1",
        "s": "1",
        "click": "0",
    }

    response = requests.get(url, headers=headers, params=params)
    if response.status_code == 200:
        return response.text
    else:
        return None

def extract_prices(html):
    soup = BeautifulSoup(html, "html.parser")
    items = soup.find_all("li", class_="gl-item")

    prices = []
    for item in items:
        price_tag = item.find("strong", class_="J_price")
        if price_tag:
            price = price_tag.get_text().strip()
            prices.append(price)

    return prices

# 测试代码
html = get_jd_laptops()
if html:
    prices = extract_prices(html)
    for price in prices:
        print(price)
else:
    print("请求失败")


这里多说一句,我们可以根据需要进一步处理提取到的价格数据,比如转换为数值类型进行计算或其他操作。如果有uu打算在亚马逊之类的海外平台购买,也可以整活:

import requests
from bs4 import BeautifulSoup

def get_amazon_laptops():
    url = "https://www.amazon.com/s"
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.182 Safari/537.36",
    }
    params = {
        "k": "Mac笔记本电脑",
    }

    response = requests.get(url, headers=headers, params=params)
    if response.status_code == 200:
        return response.text
    else:
        return None

def extract_prices(html):
    soup = BeautifulSoup(html, "html.parser")
    items = soup.find_all("div", class_="s-result-item")

    prices = []
    for item in items:
        price_tag = item.find("span", class_="a-offscreen")
        if price_tag:
            price = price_tag.get_text().strip()
            prices.append(price)

    return prices

# 测试代码
html = get_amazon_laptops()
if html:
    prices = extract_prices(html)
    for price in prices:
        print(price)
else:
    print("请求失败")


不过以我的经验来看,618并不是在海外购物平台买东西的绝佳时机,这种除了官网日常做活动,还得看黑五这种。

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_HTTP_03


这里要提醒大家的是,如果你想要爬亚马逊这种平台,建议是要使用全球HTTP代理的,国内HTTP代理不好使。也别上什么免费的全球HTTP代理了,他们网页反爬只会更严格。类似bright data这种老牌的厂商是OK,不过属实有点贵,还是看兜够不够硬。

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_Chrome_04

全球HTTP代理我不是很建议用国外品牌的,毕竟人家老家就是国外,而且人的工作机制在那,万一有点什么问题,能给你当天回复算你运气好。

国内的无非就是那几家,挑几家看看价格,然后选你心理价位最合适的就OK。

给大家伙看看价格:

ipidea:

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_html_05

青果网络:

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_Chrome_06

smartproxy:

Python如何爬取京东mac电脑的数据?全球HTTP代理应用_html_07

……


总的来说,我个人会比较倾向青果网络这家,毕竟国内HTTP代理我也持续用这家的。全球HTTP代理这家目前使用下来效果也不错,有什么问题,技术运维反馈也很快,问题基本能立马得到解决。

标签:HTTP,get,Python,price,爬取,html,prices,return
From: https://blog.51cto.com/u_15908682/6505467

相关文章

  • python之shutil模块
    shutil可以简单的理解为sh+util,是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压缩等操作。1复制复制文件:importshutil#从src文件路径复制数据到dst,复制成功后返回dst完整路径,src、dst是文件路径不能是文件目录。如果当前的dst已存在的话就会被覆盖掉shuti......
  • js拦截XMLHttpRequest
    需要做一个扩展,拦截XMLHttpRequest,修改response里面部分值,查阅资料后一般是通过下面方法拦截letoldOpen=XMLHttpRequest.prototype.open;XMLHttpRequest.prototype.open=function(method,url,async,user,password){//拦截open//console.log(url)retu......
  • Python 字符编码转换(转载)
    Python字符编码转换1.在python2默认编码是ASCII,python3里默认是unicode2.unicode分为utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),soutf-16就是现在最常用的unicode版本,不过在文件里存的还是utf-8,因为utf8省空间3.在py3中encode,在转码的同时......
  • Python3网络爬虫开发实战阅读笔记
    基本库的使用网络请求库urllib(HTTP/1.1)Python自带请求库,繁琐基础使用:略requests(HTTP/1.1)Python常用第三方请求库,便捷基础使用:略httpx(HTTP/2.0)Python第三方库,支持HTTP/2.0,支持异步请求,支持Python的async请求模式pipinstall'httpx[http2]'基础使用:与requests相似,默认......
  • python unitest 测试装置(Test Fixture)
    unittest框架提供了测试装置(TestFixture)的功能,用于在测试用例执行前后进行准备和清理操作。测试装置包括setUp()方法和tearDown()方法,分别用于在每个测试用例执行前和执行后进行相应的操作。下面是一个示例,演示如何使用测试装置:importunittestclassMyTestCase(unittest.Te......
  • python unitest 测试运行器(Test Runner)
    测试运行器(TestRunner)是unittest框架提供的执行测试用例的组件,用于自动运行测试用例并生成测试结果报告。它负责加载测试用例、执行测试用例,并提供测试结果的输出。unittest框架提供了多种测试运行器,包括TextTestRunner、HTMLTestRunner、XMLTestRunner等。这些运行器可以根据不......
  • 爬取图片写入时报错--添加个等待时间
    当爬取图片时报requests.exceptions.JSONDecodeError:Invalid\escape:line29column132(char62481)这个错时,在写入的时候加个等待时间就好 ......
  • python 断言方法
    assertEqual(a,b):判断a和b是否相等。self.assertEqual(2+2,4)#通过self.assertEqual('hello','world')#失败,抛出AssertionErrorassertNotEqual(a,b):判断a和b是否不相等。self.assertNotEqual(2+2,5)#通过self.assertNotEqual('hello',�......
  • python unitest 测试套件TestSuite()
    unittest框架提供了多种测试套件的使用方法,用于组织和执行测试用例。以下是一些常见的测试套件使用方法及其示例:1.使用unittest.TestSuite()创建测试套件,然后使用addTest()方法添加测试用例。importunittestclassMyTestCase(unittest.TestCase):deftest_addition(self):......
  • python unitest测试用例
    unittest框架的测试用例有三种常见的写法:函数式、类式和装饰器式。函数式写法:importunittestdeftest_sum(self):result=sum([1,2,3])self.assertEqual(result,6)if__name__=='__main__':unittest.main() 注意事项:使用函数式写法时,测......