python爬虫——实战篇
2021.7.20晚已更新
注:注释和说明已在代码中注释

python爬虫实战篇

  • 笔趣阁小说及其网址爬取
  • 4k图片网站图片爬取
  • 简历模板爬取
  • 自动填体温小程序
  • 待补充

笔趣阁小说及其网址爬取

爬取结果:
txt文件,内容是 “小说名:网址”。

步骤:(几乎所有步骤都一样)
1.右键,查看,network(网络),找到headers:User-agent伪装头
2.点击这个红色同步点击框(最上面那个),然后点击一个小说标题元素
3.查看标签目录
4.编写爬虫程序

import requests
from lxml import etreeurl = "https://www.xbiquge.la/"
headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36 Edg/91.0.864.67'}def main():html_text = requests.get(url = url, headers = headers).text#解析#先实例化一个etree对象html_etree_object = etree.HTML(html_text)passage_title_list1 = html_etree_object.xpath("//div/dl/dt/a[@href]")passage_addre_list1 = html_etree_object.xpath("//dt/a/@href")fp = open('data.txt','w',encoding='utf-8')# print(passage_title_list1)# print(passage_addre_list1)# print(passage_title_list1[0].xpath('./text()'))
#局部解析并写入文件for (ti,ad) in zip(passage_title_list1,passage_addre_list1):#print(ti.xpath("./text()"),ad) ti.xpath("./text()")是局部解析,注意需要是./text(),特别注意点号“ . ”不能少!!fp.write(ti.xpath("./text()")[0] + ":" + ad + '\n')fp.close()main()

结果:

4k图片网站图片爬取

爬取结果:
图片存入文件夹
4k图片网站:https://pic.netbian.com/

import requests
from lxml import etree
import osdef get_picture():try:url = "https://pic.netbian.com/4kdongman/index_2.html"headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}#抓取网页html_pic = requests.get(url = url , headers = headers)#查看状态码,若不是200返回异常html_pic.raise_for_status()#编码utf-8html_pic.encoding = html_pic.apparent_encoding#使用xpath数据解析html_text = html_pic.textetree_html = etree.HTML(html_text)li_list = etree_html.xpath('//div[@class="slist"]/ul/li')#创建文件夹if not os.path.exists('./pictures1'):os.mkdir('./pictures1')#写入文件picture1for li in li_list:#局部解析出图片地址和名字pic_add ="https://pic.netbian.com/" + li.xpath("./a/img/@src")[0]#注意xpath返回一个列表所以取下标[0],而且返回的地址不完全,所以在网址上打开看一下,把少的域名补上pic_name = li.xpath("./a/img/@alt")[0] + '.jpg'img_data = requests.get(url = pic_add,headers = headers).contentimg_path = "pictures1/" + pic_namewith open(img_path,'ab') as fp:fp.write(img_data)print(pic_name,"保存成功!")fp.close()except:return"产生异常"
def main():get_picture()main()

结果展示:

简历模板爬取

爬取结果:
简历模板的压缩包保存到文件夹中
简历模板网站:https://sc.chinaz.com/jianli/free.html
代码如下:(注释已注明)

import requests
from lxml import etree
import osdef main():url = "https://sc.chinaz.com/jianli/free.html"headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36'}down_data(url, headers)url_set = set()#把每一页的url放到一个容器里(有待完善,不能爬取足够多的网址,比如789页)url_set = get_url(url,headers,url_set)for urll in url_set:down_data(urll,headers)def get_url(url,headers,url_set):#此函数有待完善,缺点是只能爬取第一页的几个分页链接#其实这个也应该使用try-excepthtml_text = requests.get(url = url ,headers = headers ).texthtml_tree = etree.HTML(html_text)lable_list = html_tree.xpath('//div[@class="pagination fr clearfix clear"]/a')for lable_ in lable_list[2:7]:lable_url = "https://sc.chinaz.com/jianli/" + lable_.xpath("./@href")[0]url_set.add(lable_url)return url_setdef down_data(url,headers):try:html_ = requests.get(url = url,headers = headers)#print("状态码",html_.status_code)html_.raise_for_status()html_.encoding = html_.apparent_encoding#页面解析html_text = html_.texthtml_tree = etree.HTML(html_text)#局部解析#下载地址列表loadadd_lable_list = html_tree.xpath('//div[@id="container"]/div/a')loadadd_list = []for lable in loadadd_lable_list:loadadd_list.append(lable.xpath('./@href'))#再解析+下载if not os.path.exists('./jianli'):os.mkdir('./jianli')for loadadd in loadadd_list :url = "https:" + loadadd[0]#解析单个简历的页面html_2 = requests.get(url = url,headers = headers)html_2.encoding = html_2.apparent_encodingetree_html = etree.HTML(html_2.text)loadfilename = etree_html.xpath("//div[@class='ppt_tit clearfix']/h1/text()")loadpath = "jianli/" + loadfilename[0] + ".rar"data_address = etree_html.xpath('//div[@class="down_wrap"]//li[1]/a/@href')[0]jianli_data = requests.get(url = data_address,headers = headers).contentwith open(loadpath,"ab") as fp:fp.write(jianli_data)print(loadfilename[0],"保存成功!")fp.close()except:print("产生异常")main()

结果展示:

自动填体温小程序

大家可以仿照这个案例去写一个类似的程序(仅供学习使用!!)


我想能不能使用爬虫实现自动补填体温(仅供学习!!!)


填完之后点击保存。这个是基本需求。


进入正题:

在这个界面打开抓包工具(右键检查),切到network,点击登录(提交请求),在network给的一系列包中国找到状态为post的,最下面会有data,这个就是我们需要调用request库post的data,包括账号,密码,验证码,然后就会实现登录,注意需要使用session(会自动保存cookie,这样下次再request 去post体温情况的时候才能是你登录的账号的操作,否则就仍是登录页面),然后提交体温的时候也是类似的操作,点击提交体温按钮发起请求,再network中寻找状态为post的包,看看data的格式,然后使用刚才已经自动保存了cookie的session对象post体温(data)
还有就是,对于验证码我使用的是超级鹰打码平台。

上代码:(由于有的部分涉及到了隐私,所以此代码不可以直接运行!仅供学习参考!!)

import requests
from lxml import etree
from chaojiying.chaojiying import Chaojiying_Clientclass tmp_input():def __init__(self,username,userpaw):self.username = usernameself.userpaw = userpawdef tmp_in(self):#获取验证码图片url = "登录网址"headers = {'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36','Referer':'登录网址','Cookie':''}response = requests.get(url = url,headers = headers)#print(response.status_code)tree = etree.HTML(response.text)yzm_pic_address = tree.xpath('验证码图片url的xpath表达式')[0]#print(yzm_pic_address)yzm_pic = requests.get(url = yzm_pic_address,headers = headers).contentwith open("./yzm_pic.jpg",'wb') as fp:fp.write(yzm_pic)fp.close()#识别验证码chaojiying_idf = Chaojiying_Client('', '', '')  # 这一行调用超级鹰,有三个参数,大家可以去了解一下超级鹰的使用image = open('yzm_pic.jpg', 'rb').read()yzm = chaojiying_idf.PostPic(image, 1005)['pic_str']  # 返回验证码识别后的内容print('验证码识别结果:',yzm)#登录请求session = requests.Session()login_url = '登录网址'csrf = tree.xpath('csrf的xpath表达式')[0]data = {'csrfmiddlewaretoken': csrf,'username': self.username,'password': self.userpaw,'check_code': str(yzm),'next': '/'}menu_response = session.post(url = login_url,headers = headers,data = data)#上午体温补填tmpam_url = '填体温页面地址'headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36','Referer': '填体温页面使用抓包工具查找到的referer地址(发起请求的前一个页面地址)',}responseam = session.get(url = tmpam_url,headers = headers)amtree = etree.HTML(responseam.text)amcsrf = amtree.xpath('上午体温补填页面csrf的xpath表达式')[0]amdata = {'csrfmiddlewaretoken': amcsrf,'tw':'36.5','fl': 'False','gk': 'False','hx': 'False','qt': 'False','jc': 'False','fx': 'False','jqjc':'','lc':'','actionName': 'actionValue'}session.post(url = tmpam_url,headers = headers,data = amdata)#下午体温补填tmppm_url = '下午填体温页面地址'headers = {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36','Referer': '同上所讲(可能没说清,可以去百度)',}responsepm = session.get(url=tmppm_url, headers=headers)pmtree = etree.HTML(responsepm.text)pmcsrf = pmtree.xpath('下午体温补填页面csrf的xpath表达式')[0]pmdata = {'csrfmiddlewaretoken': pmcsrf,'tw': '36.4','fl': 'False','gk': 'False','hx': 'False','qt': 'False','jc': 'False','fx': 'False','jqjc': '','lc': '','actionName': 'actionValue'}session.post(url=tmppm_url, headers=headers, data=pmdata)person1_tmpinput = tmp_input(username="我女朋友的账号",userpaw="我女朋友的密码")#如果没有女朋友就可以把这一行和下一行删掉
person1_tmpinput.tmp_in()
person1_tmpinput = tmp_input(username="我的账号",userpaw="我的密码")
person1_tmpinput.tmp_in()

待补充

python爬虫——实战篇相关推荐

  1. 线程,协程对比和Python爬虫实战说明

    此文首发于我的个人博客:线程,协程对比和Python爬虫实战说明 - zhang0peter的个人博客 这篇文章写的是我对线程和协程的理解,有错误之处欢迎指出. 举一个餐馆的例子.我们把一个餐厅当做一 ...

  2. Python 爬虫进阶篇-4行代码实现爬取指定网站中的全部图片实例演示及原理剖析

    上一篇:Python 爬虫入门篇-如何获取网页中的图片.我们了解到了 urllib 获取图片的原理,urllib.request.urlretrieve() 就是用来获取图片的. 这一篇,我们用正则表 ...

  3. Python爬虫实战(5):模拟登录淘宝并获取所有订单

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  4. Python爬虫实战(4):抓取淘宝MM照片

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  5. Python爬虫实战(3):计算大学本学期绩点

    Python爬虫入门(1):综述 Python爬虫入门(2):爬虫基础了解 Python爬虫入门(3):Urllib库的基本使用 Python爬虫入门(4):Urllib库的高级用法 Python爬虫 ...

  6. Python爬虫实战之(五)| 模拟登录wechat

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...

  7. Python爬虫实战之(五)| 模拟登录wechat 1

    作者:xiaoyu 微信公众号:Python数据科学 知乎:Python数据分析师 不知何时,微信已经成为我们不可缺少的一部分了,我们的社交圈.关注的新闻或是公众号.还有个人信息或是隐私都被绑定在了一 ...

  8. 王校长撩妹不成反被锤爆?再有钱的舔狗也只是舔狗【Python爬虫实战:微博评论采取】

    大家好,我是辣条呀~ 正如标题所示,想必这两天大家被王校长的瓜轰炸了吧,微博上都上了几轮热搜了,我也是吃的津津有味,难得看王校长在女生面前吃瘪呀.加上和一个朋友聊到了微博评论采集遇到的问题,有感而发写 ...

  9. Python爬虫实战之二:requests-爬取亚马逊商品详情页面

    本实战项目是中国大学MOOC国家精品课程<Python网络爬虫与信息提取>(by 嵩天 北京理工大学)学习笔记.代码段均可在ide中运行by now(2021-11-29). 目录 1.爬 ...

最新文章

  1. python如何启动app_Python手机app爬虫|Airtest连接多个手机的时候,如何启动APP-start_app...
  2. 如何在Linux使用Eclipse + CDT开发C/C++程序? (OS) (Linux) (C/C++) (gcc) (g++)
  3. npm ERR! code ELIFECYCLE【最好记的解决方案】
  4. 如何让IOS中的文本实现3D效果
  5. Strategy(策略)--对象行为型模式
  6. mel滤波器组频率响应曲线_了解二阶滤波器的奈奎斯特图
  7. python工作流程_讨论 - 廖雪峰的官方网站
  8. Linux下搭建AP
  9. python socket模块 和pyqt5_PyQt5+Socket实现CS架构的建议聊天室
  10. LINUX C# 加载本地库的范例代码
  11. python爬虫爬取网页图片存储本地_Python爬虫抓取糗百的图片,并存储在本地文件夹...
  12. 手机pdf文件转语音_PDF文件怎么转EXCEL?教你一款超实用的迅捷PDF转换器
  13. Chrome快捷键,电脑高手都这样用
  14. 微信内置浏览器如何自动跳转其它浏览器
  15. python技巧:将文件夹下的文件遍历,保留特定文件,删除其他文件
  16. 数据库搭建范式——BC范式
  17. 【华为机试真题 Python】窗口滑动和最大值
  18. matlab的常量和变量运算符
  19. 量化交易:如何让回测更贴近实盘结果
  20. 积米浏览器下载|积米浏览器免费下载

热门文章

  1. [java]自动生成指定长度的英文名字
  2. 1241.外卖店优先级
  3. android uefi 编译报错,【Android SDM660开机流程】- UEFI XBL 代码流程分析
  4. 业务日志告警如何做?
  5. 疯狂星期四,抢980元超值美食卡,尊享超级特价!
  6. 计算机网络的利与弊,网络的利与弊辩论会总结.doc
  7. 数据类型扩展 相关面试题讲解 类型转换
  8. 在PR中如何调整图像大小的分辨率
  9. 如何通过 Apple Watch 解锁 Mac !
  10. 详细的辅助开发教程,从入门到精通