一、观察网页
- 打开浏览器
- 找到京东手机分类下的网址https://list.jd.com/list.html?cat=9987%2C653%2C655&page=5&s=117&click=0
- 确认爬取的html页面是动态页面还是静态页面
import requests import pandas as pd from bs4 import BeautifulSoup
三、请求数据
- 请求方式
- 在开发者工具中的标头中,查看请求方式为GET
- 伪装浏览器
- 需要用User-Agent伪装成浏览器,对反爬进行反制
- for循环语句
- 代码如下:
data = [] for page in range(1, 11): print(f"正在爬取第{page}页...") # 打印当前运行的页面,方便查看爬虫进度 headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'} # 构造请求头,模拟浏览器请求 response = requests.get(url.format(page), headers=headers) # 发送请求并获取响应
四、解析数据
- 使用beautifulsoup4库来解析HTML内容并找到所有手机数据所在的标签。接着,遍历所有手机标签并通过try…except来处理异常(例如有些商品信息不全的情况),依次爬取商品名称、价格、链接和店铺信息,并将这些信息存储在一个列表中,代码如下:
soup = BeautifulSoup(response.text, 'html.parser') # 解析HTML内容 goods_list = soup.find_all('li', class_='gl-item') # 找出所有手机信息所在的标签 for goods in goods_list: # 遍历所有手机信息标签 try: name = goods.find('div', class_='p-name').find('a').text.strip() # 找出手机名称 price = goods.find('div', class_='p-price').find('i').text.strip() # 找出手机价格 link = 'https:' + goods.find('div', class_='p-name').find('a')['href'] # 找出手机链接 store = goods.find('div', class_='p-shop').find('a', target='_blank').text.strip() # 找出手机店铺 data.append([name, price, link, store]) # 将手机信息存储在一个列表中 except: continue # 处理异常情况,例如有些商品信息不全的情况
五、存储数据
- 将列表转换为pandas中的DataFrame格式,调用to_excel方法将数据导出到Excel文件中,代码如下:
df = pd.DataFrame(data, columns=['名称', '价格', '链接', '店铺']) # 将数据转换为DataFrame格式 df.to_excel('jd_phones.xlsx', index=False) # 将数据导出到Excel文件中,不导出行索引
六、全套代码
import requests import pandas as pd from bs4 import BeautifulSoup url = 'https://list.jd.com/list.html?cat=9987,653,655&page={}' data = [] for page in range(1, 11): print(f"正在爬取第{page}页...") # 打印当前运行的页面,方便查看爬虫进度 headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'} # 构造请求头,模拟浏览器请求 response = requests.get(url.format(page), headers=headers) # 发送请求并获取响应 soup = BeautifulSoup(response.text, 'html.parser') # 解析HTML内容 goods_list = soup.find_all('li', class_='gl-item') # 找出所有手机信息所在的标签 for goods in goods_list: # 遍历所有手机信息标签 try: name = goods.find('div', class_='p-name').find('a').text.strip() # 找出手机名称 price = goods.find('div', class_='p-price').find('i').text.strip() # 找出手机价格 link = 'https:' + goods.find('div', class_='p-name').find('a')['href'] # 找出手机链接 store = goods.find('div', class_='p-shop').find('a', target='_blank').text.strip() # 找出手机店铺 data.append([name, price, link, store]) # 将手机信息存储在一个列表中 except: continue # 处理异常情况,例如有些商品信息不全的情况 df = pd.DataFrame(data, columns=['名称', '价格', '链接', '店铺']) # 将数据转换为DataFrame格式 df.to_excel('jd_phones.xlsx', index=False) # 将数据导出到Excel文件中,不导出行索引
七、运行结果
-
爬取了10页
-
可以找到文件“jd_phones.xlsx"
-
Excel文件
以上就是“Python爬取京东手机信息”的全部内容,希望对你有所帮助。
关于Python技术储备
学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!
一、Python所有方向的学习路线
Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
二、Python必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。