一、基本的正则表达式

正则表达式用来提取爬虫中需要的公共要素

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定向爬虫入门相关推荐

  1. python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!

    原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...

  2. Python网络爬虫入门

    Python网络爬虫入门 网络爬虫(web crawler),也叫网络蜘蛛(Web Spider).网络机器人(Internet Bot).简单地说,抓取万维网(World Wide Web)上所需要 ...

  3. python中国大学排名爬虫写明详细步骤-python网络爬虫入门实例:中国大学排名定向爬虫...

    中国大学排名定向爬虫的 设计和实现 一.环境安装: 1.选择一个适合自己的IDE(以下代码用Jupyter Notebook编写) 2.打开cmd,安装requests库和beautifulsoup4 ...

  4. python软件安装步骤-一篇非常棒的安装Python及爬虫入门博文!

    一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) ***部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据挖掘? 3.大数据和数据挖掘的区别? 1.大数据(B ...

  5. Python网络爬虫入门(一)入门

    Python网络爬虫(一)入门 使用到的库:requestspip+BeautifulSoup4pip+tqdmpip+html5lib python版本:3.8 编译环境:Jupyter Noteb ...

  6. Python 网络爬虫入门详解

    什么是网络爬虫 网络爬虫又称网络蜘蛛,是指按照某种规则在网络上爬取所需内容的脚本程序.众所周知,每个网页通常包含其他网页的入口,网络爬虫则通过一个网址依次进入其他网址获取所需内容. 优先申明:我们使用 ...

  7. 【python】爬虫入门相关

    ​目录 一. 爬虫的流程 二.爬虫相关技术介绍 1. HTML和CSS 1> HTML 2> URL网址解释 3> HTTP与HTTPS 协议 4> Chrome浏览器分析网站 ...

  8. python与爬虫入门演示

    Python 简介Python 历史Python 之禅Ipython 解释器ipython magic命令ipython 使用Ipython notebook使用 Anacondaconda 的使用虚 ...

  9. 01-为什么要学爬虫-python小白爬虫入门教程

    学习目的以及需求 需求来自于:抓取的某个网站或者某个应用的内容,提取有用的价值 实现手段 模拟用户在浏览器或者应用(app)上的操作,实现自动化的程序 爬虫应用场景(利用爬虫能做什么?) 大家最熟悉的 ...

  10. Python之爬虫入门(最详细通俗易懂讲解)

    爬虫入门及小案列,我们将学会如何爬取网站图片,视频 首先,我们需要导入request的包 然后定义我们要访问的地址,模拟浏览器发送请求,获取返回内容, 最后,再通过**urllib.request.u ...

最新文章

  1. MySQL 在 LIMIT 条件后注入
  2. 【数据分析】Python :知乎数据清洗整理和结论研究
  3. IDA pro 使用笔记
  4. bhjqahjshjhjgqwsoixcyuwyub
  5. 用碧海潮声制作的宋体(雅黑宋体)替换Windows7原生的火柴棍式的宋体
  6. 在VS2013平台下如何快速解决c++代码内存泄漏问题
  7. 从天而降的文字,文字掉落效果
  8. 如果看了此文你还不懂傅里叶变换,那就过来掐死我吧(完整版)
  9. DICOM worklist工作原理?
  10. 算法精解 c语言描述 pdf,【2020新书】C语言算法导论,Introducing Algorithms in C,174页pdf...
  11. css 图片反色,颜色反色,高斯模糊
  12. ai图片怎么把图中的字改掉_如何修改图片上的文字
  13. R语言 WDI包的使用
  14. 升级opengl和显卡驱动_opengl驱动 OpenGL版本或显卡驱动版本太低的解决方法介绍_网络-游戏圈...
  15. C++中带.h与不带.h的头文件
  16. bfm人脸模型和3DDFA及其变种
  17. 微信H5页面源码如何看
  18. BJOI2019 勘破神机 新解
  19. 下面有9个点的图片。你能一笔画出4条直线连接着9个点,并且不重复任何一条线吗?
  20. Office365 Exchange Online系列之邮箱大管家视频课程-李远-专题视频课程

热门文章

  1. 究竟是昨天(2.3)立春还是今天(2.4)立春?易语言告诉你真相
  2. 模拟登陆广工统一认证系统
  3. GH4199变形合金
  4. 后盾网div+css,css定位(后盾网)
  5. python哪个字体好看_Python实现对比不同字体中的同一字符的显示效果
  6. 程序员的工作总结(2017-12-04)
  7. 计算机桌面底边出现库如何去掉,桌面图标有蓝底怎么去掉? 去掉桌面图标阴影技巧...
  8. 【原创】龙妈的善良和软件测试的关系
  9. 测试统计学卡方,t检验,Kappa和Kendall评价
  10. #2.生活小妙招-实现没有加速选项的视频加速操作