python爬虫之路——初识爬虫三大库,requests,lxml,beautiful.
三大库:requests,lxml,beautifulSoup.
Request库作用:请求网站获取网页数据。
get()的基本使用方法
#导入库
import requests
#向网站发送请求,获取数据。
res= requests.get(‘http://bj.xiaozhu.com/’)
#打印返回值,<response [200]>成功,<response [404]>,<response [400]>失败
print(res)
#打印返回文本
print(res.test)
加入请求头伪装成浏览器
import request
#User-Agent
headers={Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 QIHU 360SE}
#将heads导入
res=requests.get('https://www.baidu.com/?tn=92495750_hao_pg',headers=headers)
print(res.test)
post()的基本使用:用于提交表单来爬取需要登录才能获得数据的网页。
增加健壮性和效率
Requests库的错误和异常分四种:自己分为两种①未发出Reques②未收到Html
当发现这些错误或异常进行代码修改重新再来,爬虫重新再来,有些数据又爬一次。效率和质量低。
import request
#User-Agent
headers={Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 QIHU 360SE}
#将heads导入
res=requests.get('https://www.baidu.com/?tn=92495750_hao_pg',headers=headers)
try:
print(res.test)
except ConnectionError:
print('拒绝连接')
beautifulSoup()库的作用:①解析requests库请求的网页,把网页源代码解析成soup文档。②初步提取
①解析requests库请求的网页,把网页源代码解析成soup文档,得到标准缩进格式的结构输出,为进步处理准备。
#导入库
import requests
from bs4 import BeautifulSoup
#向网站发送请求,获取数据。
res= requests.get(‘http://bj.xiaozhu.com/’)
#利用Beauiful库解析为soup文档。
soup=BeautifulSoup(res.test,'html.parser')
print(soup.prettify())
②初步提取
find_all和find()的区别:查询一个或查询所有。使用方法一样,没有具体事例可能用的不多。
根据标签名提取内容
soup.find_all('div',"item")
soup.find_all('div',class='item')
soup.find_all('div',attrs={"class":"item"})
selector():根据路径查询数据
soup.selector( div > div > div.lay.first > div.list_li.\30 > a > img)
div是标签名,list_li.\30是属性class的值
多分支标签中不能使用child要改为type
li:nth-child(1)需改为li:nth-of-type(1)
③get_text()方法:提取标签内容去掉头尾,<i>5456</i> => 5456
import requests
from bs4 import BeautifulSoup
#向网站发送请求,获取数据。
res= requests.get(‘http://bj.xiaozhu.com/’)
#利用Beauiful库解析为soup文档。
soup=BeautifulSoup(res.test,'html.parser')
#利用css定位元素
prices=soup.selector( div > div > div.lay.first > div.list_li.\30 > a > img)
#提取标签内容去掉头尾,<i>5456</i>=>5456
for price in prices:
print (price.get_text())
lxml库
python爬虫之路——初识爬虫三大库,requests,lxml,beautiful.的更多相关文章
- python爬虫之路——初识爬虫原理
爬虫主要做两件事 ①模拟计算机对服务器发起Request请求 ②接收服务器端的Response内容并解析,提取所需的信息 互联网页面错综复杂,一次请求不能获取全部信息.就需要设计爬虫的流程. 本书主要 ...
- 【网络爬虫入门02】HTTP客户端库Requests的基本原理与基础应用
[网络爬虫入门02]HTTP客户端库Requests的基本原理与基础应用 广东职业技术学院 欧浩源 1.引言 实现网络爬虫的第一步就是要建立网络连接并向服务器或网页等网络资源发起请求.urllib是 ...
- python爬虫之路——初识lxml库和xpath语法
lxml库:是xml解析库,也支持html文档解析功能,实用功能:自动修正补全html代码. 使用流程:①导入lxml中的etree库,②利用etree.HTML(文件名)或etree.parse(本 ...
- python爬虫之路——初识函数与控制语句
介绍python函数的定义与使用方法,介绍Python的常用控制语句:判断和循环 函数: 格式 def 函数名(参数1,参数2): return ‘结果’ 判断语句:就是多选一 二选一: if c ...
- python爬虫之路——初识数据库存储
非关系型数据库:MongoDB.关系型数据库:MySQL 关系型和非关系型的区别: 安装: 使用: 应用场景: mongoDB是一种非关系型数据库,分为四大类:键值存储数据库,列存储数据库,文档型数据 ...
- python爬虫之路——初识基本页面构造原理
通过chrome浏览器的使用简单介绍网页构成 360浏览器使用右键审查元素,Chrome浏览器使用右键检查,都可查看网页代码. 网页代码有两部分:HTML文件和CSS样式.其中有<script& ...
- python爬虫系列之初识爬虫
前言 我们这里主要是利用requests模块和bs4模块进行简单的爬虫的讲解,让大家可以对爬虫有了初步的认识,我们通过爬几个简单网站,让大家循序渐进的掌握爬虫的基础知识,做网络爬虫还是需要基本的前端的 ...
- Python学习之路——初识Python
一.第一个程序Hello World: 1.打印输出Hello World: Python2打印方法: >>> print "hello world"hello ...
- python学习之路 初识xml
import requests from xml.etree import ElementTree as ET r = requests.get('http://www.webxml.com.cn// ...
随机推荐
- C#闪动任务栏的方法
用FlashWindowEx可以实现窗口的闪烁,结构如下: /// <summary> /// 闪烁窗口 /// </summary> /// <param name=& ...
- 34.Docker安装Mysql参数及环境变量使用
容器安装好后,通过exec进去到容器的内部, 容器安装的时候两种容器配置参数 直接在镜像的后面加配置 第二种方式 把这段代码拷贝过来.参数我们可以写在镜像的后面 我们把参数写在镜像的后面 然后我们需要 ...
- The Truth About GCHandles
I've heard several people asking why GCHandle doesn't implement IDisposable, considering it wraps an ...
- Working Experience - How to handle the destroyed event of UserControl
正文 问题: UserControl 如何在父窗体(程序)关闭时, 释放一些需要手动释放的资源 方法: 使用 Control.FindForm() 获取父窗体, 从而得到父窗体的 Closing/Cl ...
- C++11/14的新特性——更简洁
新的字符串表示方式——原生字符串(Raw String Literals) C/C++中提供了字符串,字符串的转义序列,给输出带来了很多不变,如果需要原生义的时候,需要反转义,比较麻烦. C++提 ...
- Python机器学习笔记:朴素贝叶斯算法
朴素贝叶斯是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.对于大多数的分类算法,在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同.比如决策树,KNN,逻辑回归,支持向 ...
- 60行代码实现一个迷你版Vue Router
这是一个超级精简版的VueRouter,实现hash模式下,hash改变组件切换的功能,原理就是利用了 Vue.js 的响应式机制触发router-view组件的重新渲染. 代码 https://gi ...
- sql server 2012 profiler打开2016的profiler
软件环境:1.本机是sql server 2012,远程服务器是sql server 20162.本机是Windows 7,安装不了sql server 2016 问题场景1:本机sql server ...
- git常用命令和linux下安装git教程
Debian/Ubuntu下使用apt-get安装git #安装libz-dev libssl-dev $ apt-get install libcurl4-gnutls-dev libexpat1- ...
- 如何在VMware workstation上创建Linux虚拟机
由于需要使用Linux虚拟机部署Hadoop集群,故在win10系统上安装了VMware workstation 14,现将介绍如何在VMware workstation上创建Linux虚拟机.下面以 ...