Python定向爬虫入门
一、基本的正则表达式
正则表达式用来提取爬虫中需要的公共要素
1、正则表达式符号与方法
常用符号:点号、星号、问号与括号
常用方法:findall、search、sub
.:匹配任意字符,换行符\n除外
:匹配前一个字符0次或无限次
?:匹配前一个字符0次或1次
.:贪心算法(吃尽可能的东西)
.*?:非贪心算法(像婴儿少量多餐)
():括号内的数据作为结果返回
findall:匹配所有符合规律的内容,返回包含结果的列表
search:匹配并提取第一个符合规律的内容,返回一个正则式表达对象(object)
sub:替换符合规律的内容,返回替换后的值
Python中正则表达式的库文件
import re
点号的使用:
a=‘xy123’
b=re.findall(‘x.’ , a)
print b #xy
c=re.findall(‘x…’ , a)
print c #xy1
点就是占位符,几个点就是几个符号
星号的使用:
a=‘xyxy123’
b=re.findall(‘x*’ , a)
print b #[‘x’,’’,‘x’,’’,’’,’’,’’,’’,’’]
匹配前面的字符,并查找出所有位置
问号的使用:
a=‘xy123’
b=re.findall(‘x?’ , a)
print b #[‘x’,’’,’’,’’,’’,’’,’’,’’]
*.的使用:
search_code=‘hahfajxxixxfalflsjfslfjslfjxxlovexxljsljfsxxyouxxsjflsdjflsj’
a=re.findall(‘xx.*xx’, search_code)
print(a)
#[‘xxixxfalflsjfslfjslfjxxlovexxljsljfsxxyouxx’]
.*在满足规则时,能找多少找多少
.*?的使用:
b=re.findall('xx.?xx’, search_code)
print(b)
#[‘xxixx’,‘xxlovexx’,‘xxyouxx’]
.?少量多餐,首先满足条件,然后尽可能多的挑选尽可能多的组合。
(.*?)的使用: 五星重点
c=re.findall(‘xx(.*?)xx’, search_code)
print©
#[‘i’,‘love’,‘you’]
print c
for each in d:
print each,
#i love you
加入换行符:
s=’’‘sdkfjxxhello
xxfslfjslxxworldxxafjf’’’
d=re.findall(‘xx(.*?)xx’, s)
print d
#[‘fslfjsl’]
原因:.可以匹配任意字符,换行符除外
d=re.findall(‘xx(.*?)xx’, s,re.s)
.匹配任意字符,包含换行符
#[‘hello\n’,‘world’]
对比findall和search的区别:
s2=‘asdfxxIxx123xxlovexxdfd’
f=re.search(‘xx(.xx.?)xx123xx(.?)xx’, s2).group(1)
print(f)
#I
f=re.search(‘xx(.xx.?)xx123xx(.?)xx’, s2).group(2)
print(f)
#love
f2=re.search(‘xx(.xx.?)xx123xx(.?)xx’, s2)
print(f2)
#f2[0][1]
group()代表的是括号的个数
f为tuple(元组)类型
sub的使用:
s=‘123adkfjslksl23’
output=re.sub(‘123(.?)123’, ‘123789’,s)
output2=re.sub('123(.?)123’, ‘123%d’%12434,s)
print(output)
#123789
otput=re.sub(‘123(.*?)1’, ‘aaaa’,s)
print(otput)
#aaaa23
替换掉与匹配项相同的字符,其余的不变
2、正则表达式的常用技巧
import re
form re import *
from re import findall,search,sub,S(这样写可以省掉re.)
python compile()方法:
compile() 函数将一个字符串编译为字节代码。
匹配数字(\d+):
a=‘dfsfjsl13233skdfjsldf’
b=re.findall(’(\d+)’,a)
print(b)
3、正则表达式的应用举例
(1)使用findall与search从大量文本中匹配感兴趣的内容
先抓大后抓小
text_fied=re.findall(’
- (.*?)
’,html,re.S)[0]
the_text=re.findall( 提取内容text_fied )
需要观察具体的本文内容来进行设计=
(2)使用sub实现翻页功能
for i in range(2, total_pape+1):
new_link=re.sub(‘pageNum=\d+’,'pageNum=%d’i, old_url, re.S)
print new_link
4、python爬虫实战
目标网站:http://www.jikexueyuan.com/
目标内容:课程图片
实现原理:
1、保存网页源代码
2、python读文件加载源代码
3、正则表达式提取图片网址
4、下载图片
二、python单线程爬虫
1、requests介绍与安装
requests:
http for humens
requests库是一个常用的用于http请求的模块,它使用python语言编写,可以方便的对网页进行爬取,是学习python爬虫的较好的http请求模块。
相关链接:https://blog.csdn.net/pittpakk/article/details/81218566
优点:
完美替代了python的urllib2模块
更多的自动化
更友好的用户体验
更完善的功能
安装:
Windows:pip install requests
Linux: sudo pip install requests
anaconda :conda install requests
第三方库安装技巧:
少用easy_install,因为只能安装不能卸载
多用pip方式安装
撞墙了怎么办?请戳:
https://www.lfd.uci.edu/~gohlke/pythonlibs/
界面如下:
在其中搜索需要的pythonlib包,并进行下载。
下载的文件后缀名为.whl,修改后缀名为.zip,并进行解压缩
这里的requests文件就是我们需要的,直接将其放到python目录下的lib文件中就可以了,此时requests的库就可以使用了。(requests-2.6.0.dist-info是无用的)
2、制作网页爬虫
requests获取网页源代码:
(1)直接获取源代码
(2)修改http头获取源代码
import requests
html=requests.get('https://www.easyicon.net/')
print html.txt
修改http头获取源代码:(反侦察)
import requestsheader={‘User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.108 Safari/537.36’}
#获取方式见下方html=requests.get('https://www.easyicon.net/', headers=header)
html.encoding='utf-8'
print html.txt
打开想要爬取的网页,右键审核元素/检查,找到network,点击网址进行刷新,出现新的链接时,随便选择一个,下滑找到request headers,复制过来即可。
requests与正则表达式:
使用request获取网页源代码,再使用正则表达式匹配出感兴趣的内容,这就是单线程简单爬虫的基本原理。
3、向网页提交数据
get与post介绍:
get是从服务器上获取数据
post是向服务器传送数据
get通过构造url中的参数来实现功能
requests表单提交:
核心方法:requests.post
核心步骤:构造表单-提交表单-获取返回信息
show more:异步加载
打开审核元素:找到network,然后点击show more,会看到headers离requests method的方法为post。
下滑会看到from data,page为2.
常规获取网页数据的方法:
import requests
import re
url=‘https://www.crowdfunder.com/browse/deals’
url2='https://www.crowdfunder.com/browse/deals&template=false' #也来源于networkhtml=requests.get(url).text
print(html)new method:(网页包含异步加载的)
data={
entities_only='true'
'page':'1' #可修改
}
html_post=requests.post(url,data=data)
title=re.findall('"card-title">(.*?)</di>', html_post.test,re.S)
for each in title:print(each)
4、实战-爬虫
涉及知识:
requests获取网页
re.sub换页
正则表达式匹配内容
Python定向爬虫入门相关推荐
- python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...
- Python网络爬虫入门
Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider).网络机器人(Internet Bot).简单地说,抓取万维网(World Wide Web)上所需要 ...
- python中国大学排名爬虫写明详细步骤-python网络爬虫入门实例:中国大学排名定向爬虫...
中国大学排名定向爬虫的 设计和实现 一.环境安装: 1.选择一个适合自己的IDE(以下代码用Jupyter Notebook编写) 2.打开cmd,安装requests库和beautifulsoup4 ...
- python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!
一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) ***部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据挖掘? 3.大数据和数据挖掘的区别? 1.大数据(B ...
- Python网络爬虫入门(一)入门
Python网络爬虫(一)入门 使用到的库:requestspip+BeautifulSoup4pip+tqdmpip+html5lib python版本:3.8 编译环境:Jupyter Noteb ...
- Python 网络爬虫入门详解
什么是网络爬虫 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序.众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容. 优先申明:我们使用 ...
- 【python】爬虫入门相关
目录 一. 爬虫的流程 二.爬虫相关技术介绍 1. HTML和CSS 1> HTML 2> URL网址解释 3> HTTP与HTTPS 协议 4> Chrome浏览器分析网站 ...
- python与爬虫入门演示
Python 简介Python 历史Python 之禅Ipython 解释器ipython magic命令ipython 使用Ipython notebook使用 Anacondaconda 的使用虚 ...
- 01-为什么要学爬虫-python小白爬虫入门教程
学习目的以及需求 需求来自于:抓取的某个网站或者某个应用的内容,提取有用的价值 实现手段 模拟用户在浏览器或者应用(app)上的操作,实现自动化的程序 爬虫应用场景(利用爬虫能做什么?) 大家最熟悉的 ...
- Python之爬虫入门(最详细通俗易懂讲解)
爬虫入门及小案列,我们将学会如何爬取网站图片,视频 首先,我们需要导入request的包 然后定义我们要访问的地址,模拟浏览器发送请求,获取返回内容, 最后,再通过**urllib.request.u ...
最新文章
- MySQL 在 LIMIT 条件后注入
- 【数据分析】Python :知乎数据清洗整理和结论研究
- IDA pro 使用笔记
- bhjqahjshjhjgqwsoixcyuwyub
- 用碧海潮声制作的宋体(雅黑宋体)替换Windows7原生的火柴棍式的宋体
- 在VS2013平台下如何快速解决c++代码内存泄漏问题
- 从天而降的文字,文字掉落效果
- 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧(完整版)
- DICOM worklist工作原理?
- 算法精解 c语言描述 pdf,【2020新书】C语言算法导论,Introducing Algorithms in C,174页pdf...
- css 图片反色,颜色反色,高斯模糊
- ai图片怎么把图中的字改掉_如何修改图片上的文字
- R语言 WDI包的使用
- 升级opengl和显卡驱动_opengl驱动 OpenGL版本或显卡驱动版本太低的解决方法介绍_网络-游戏圈...
- C++中带.h与不带.h的头文件
- bfm人脸模型和3DDFA及其变种
- 微信H5页面源码如何看
- BJOI2019 勘破神机 新解
- 下面有9个点的图片。你能一笔画出4条直线连接着9个点,并且不重复任何一条线吗?
- Office365 Exchange Online系列之邮箱大管家视频课程-李远-专题视频课程
热门文章
- 究竟是昨天(2.3)立春还是今天(2.4)立春?易语言告诉你真相
- 模拟登陆广工统一认证系统
- GH4199变形合金
- 后盾网div+css,css定位(后盾网)
- python哪个字体好看_Python实现对比不同字体中的同一字符的显示效果
- 程序员的工作总结(2017-12-04)
- 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉? 去掉桌面图标阴影技巧...
- 【原创】龙妈的善良和软件测试的关系
- 测试统计学卡方,t检验,Kappa和Kendall评价
- #2.生活小妙招-实现没有加速选项的视频加速操作