网络爬虫限制(审查来源)
1.判断user-Agent进行限制。检查HTTP协议的user-Agent,只想赢浏览器或友好爬虫。
2.为了防止爬虫被拦截,修改请求头user-Agent
requests.get(url,headers = kv)
kv = {“user-Agent:Mozilla/5.0”}
3.常用查询:
r.status_code 请求状态码
r.text 内容
r.encoding Http header相应内容编码方式
r.apparent_encoding 内容分析出的响应编码方式
r.content Http响应内容的二进制形式
r.raise_for_status() 判断异常,不是200,引发、httpError异常
requests.request(method,url,**kwargs)
1.method的方式有get,post,put,patch,delete
requests.get() 的唯一一个必填参数为 url,它可以是一个字符串,用于指定目标网站的URL,值得注意的是,该方法返回的是一个 Response 对象,其常用的属性和方法列举如下:
发送GET请求
*
response.url:返回请求网站的URL
response.status_code:返回响应的状态码
response.encoding:返回响应的编码方式
response.headers:返回的响应头信息(dict类型)
response.content:返回的响应体(bytes类型)
response.text:返回的响应体(str类型),相当于 response.content.decode(‘utf-8’)*
response.json():返回的响应体(json类型),相当于 json.loads(response.text)
>>> import requests
>>> response = requests.get('http://www.httpbin.org/get')
#查看response类型
>>> type(response)
<class 'requests.models.Response'>
#返回的请求网站URL
>>> response.url
'http://www.httpbin.org/get'
#返回的状态码
>>> response.status_code
200
#检查返回的编码方式
>>> print(response.encoding)
None
平行遍历
.next_sibling 返回Html下一个平行节点标签
.previous_sibling 返回Html上一个平行节点标签
.next_siblings 返回Html后续所有平行节点标签
.previous_siblings 返回Html文本前续所有平行节点标签
搜索(深度遍历)
<>.find() 一个
<>.find_all() 全部
<>.find_parents() 先辈节点
<>.find_parent() 先辈节点第一个
<>.find_next_sibling() 后续平行节点下一个
<>.find_previous_siblings() 平行节点前续搜索
<>.find_previous_sibling() 平行节点前续搜索第一个
BeautifulSoup4库
基本方法:
soup.tag:(如:soup.a)
<tag>.name (如:a.name) 标签中的名字
<tag>.attrs 标签中的字典
<tag>.string 标签中的字符串
下行遍历:
.contents 将<tag>所有儿子节点存入列表
.children 与.contents类似,用于循环遍历儿子节点
.descendants 包含所有子孙节点,用于循环遍历
上行遍历:
.parent 节点的父亲标签
.parents 节点先辈标签的迭代类型,用于循环遍历先辈节点
re主要功能函数功能详情请点击
re.search(pattern,string,flags=0)
flags:方法:
re.I 忽略大小写,[A-Z]也能匹配小写 re.M ^操作符能给定字符串的每行当做匹配开始
re.S 正则表达式中,操作符能够匹配所有字符,默认匹配除换行外
所有字符
re.sub(pattern,repl,string,count=0,flags=0)
pattern: 正则表达式与原生字符串表示方法
repl: 替换匹配字符串 string: 待匹配的字符串
count: 最大匹配次数 flags: 控制标记
re.search() 在一个字符串中搜索匹配正则表达式的第一个位置返回match
re.match() 从一个字符串的开始位置起匹配正则表达式,返回match对象
re.findall() 以列表类型返回全部能匹配的字符串,返回列表
re.split() 将一个字符串按照正则表达式匹配结果分割,返回列表类型
re.finditer() 返回一个匹配结果的迭代类型,每个迭代元素是match对象
re.sub() 在一个字符串替换所有匹配正则表达式的子串,返回替换后的字符串
scrapy框架
创建一个新工程 scrapy startproject<name>[dir]
创建一个爬虫 scrapy genspider[options]<name》<domain》
获取爬虫配置信息 scrapy settings[options]
运行一个爬虫 scrapy crawl<spider》
列出工程中所有爬虫 scrapy list
启动url调试命令行 scrapy shell [url]
生产的工程目录:
python123demo/ 外层目录
--scrapy.cfg 部署scrapy爬虫的配置文件
python123demo/ scrapy框架的用户自定义python代码
--init-.py 初始化脚本
--items.py Items代码模板(继承类)
middlewares.py Middlewares代码模板(继承类)
pipelines.py pipelines代码模板(继承类)
settings.py scrapy爬虫的配置文件
spiders/ spiders代码模板目录(继承类)