前言嗨喽!大家好呀,这里是魔王~** 课程亮点:系统分析目标网页 html标签数据解析方法 海量数据一键保存
环境介绍:模块安装:按住键盘 win + r, 输入cmd回车 打开命令行窗口, 在里面输入 pip install 模块名 代码实现:发送请求 (访问网站) 获取数据 网页源代码 解析数据 (网页构造, css样式选择器) 保存数据
数据库:oracle 方言 mysql 方言 sqlserver 方言 SQL: 普通话
代码import requests # 发送请求 第三方模块(基于urllib开发模块) 额外安装 pip install 模块名 import parsel # 解析数据模块 第三方模块 额外安装 pip install 模块名 import csv # 内置模块 不需要你额外安装
# 伪装 请求头 request headers headers = { # 用户基本信息, 没有登陆信息 'Cookie': 'fvlid=1644577630437PyNsv7r4UeWZ; che_sessionid=6033453E-99CD-4D18-9EC6-26D8D81CB82E%7C%7C2022-02-11+19%3A07%3A13.352%7C%7C0; sessionid=1510cb04-9fdd-428f-82f7-d7b77ccae016; area=430103; sessionip=175.0.63.33; sessionvisit=98f1634e-6cbb-4f5e-97f9-6af88e5b8d33; sessionvisitInfo=1510cb04-9fdd-428f-82f7-d7b77ccae016|www.autohome.com.cn|100533; Hm_lvt_d381ec2f88158113b9b76f14c497ed48=1650521306; che_sessionvid=6223C48B-0DCD-4485-8DB7-B9A2D39AC7FF; carDownPrice=1; listuserarea=0; UsedCarBrowseHistory=0%3A43390985%2C0%3A43390239%2C0%3A43268434%2C0%3A43010424; userarea=0; ahpvno=23; Hm_lpvt_d381ec2f88158113b9b76f14c497ed48=1650523580; ahuuid=46A0D5A6-5C39-4735-A5CE-3F6DA42672C9; showNum=52; v_no=36; visit_info_ad=6033453E-99CD-4D18-9EC6-26D8D81CB82E||6223C48B-0DCD-4485-8DB7-B9A2D39AC7FF||-1||-1||36; che_ref=www.autohome.com.cn%7C0%7C100533%7C0%7C2022-04-21+14%3A46%3A20.424%7C2022-02-11+19%3A55%3A59.495; sessionuid=1510cb04-9fdd-428f-82f7-d7b77ccae016', # 浏览器基本信息 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36' } # z = 1, y = 2 url = 'https://www.che168.com/china/list/' # 1. 发送请求 (访问网站) # # 打印 # print(url) # 发送请求 方式 response = requests.get(url=url, headers=headers) # 2. 获取数据 网页源代码 html_data = response.text # 3. 解析数据 (网页构造, css样式选择器) # 数据分析 # 网站开发 >>> 都有 # 人工智能 # html(存储数据) + css(样式) + js(可以实现动态的效果) # <div class="viewlist_ul"> # 车辆信息 # </div> # <div> # 车主信息... # </div> # <img /> selector = parsel.Selector(html_data) # python 数据容器 列表 [1,3,4,5,6] # 我要用别名去取值 lis = selector.css('.viewlist_ul li') for li in lis: card_name = li.css('.card-name::text').get() cards_unit = li.css('.cards-unit::text').get() price = li.css('.pirce em::text').get() img_url = 'https:'+li.css('.img-box img::attr(src)').get() if price == None or price == "": price = li.css('.pirce::text').get() print(card_name, cards_unit, price, img_url) # 4. 保存数据 with open('汽车之家.csv', mode='a', encoding='utf-8', newline='') as f: csv_writer = csv.writer(f) csv_writer.writerow([card_name, cards_unit, price, img_url])
尾语好了,我的这篇文章写到这里就结束啦!
|