python网络爬虫学习笔记(1)


Posted in Python onApril 09, 2018

本文实例为大家分享了python网络爬虫的笔记,供大家参考,具体内容如下

(一)   三种网页抓取方法

1、 正则表达式:

模块使用C语言编写,速度快,但是很脆弱,可能网页更新后就不能用了。

2、Beautiful Soup

模块使用Python编写,速度慢。

安装:

pip install beautifulsoup4

3、 Lxml

模块使用C语言编写,即快速又健壮,通常应该是最好的选择。

(二) Lxml安装

pip install lxml

如果使用lxml的css选择器,还要安装下面的模块

pip install cssselect

(三)  使用lxml示例

import urllib.request as re
import lxml.html
#下载网页并返回HTML
def download(url,user_agent='Socrates',num=2):
  print('下载:'+url)
  #设置用户代理
  headers = {'user_agent':user_agent}
  request = re.Request(url,headers=headers)
  try:
    #下载网页
    html = re.urlopen(request).read()
  except re.URLError as e:
    print('下载失败'+e.reason)
    html=None
    if num>0:
      #遇到5XX错误时,递归调用自身重试下载,最多重复2次
      if hasattr(e,'code') and 500<=e.code<600:
        return download(url,num-1)
  return html
html = download('https://tieba.baidu.com/p/5475267611')
#将HTML解析为统一的格式
tree = lxml.html.fromstring(html)
# img = tree.cssselect('img.BDE_Image')
#通过lxml的xpath获取src属性的值,返回一个列表
img = tree.xpath('//img[@class="BDE_Image"]/@src')
x= 0
#迭代列表img,将图片保存在当前目录下
for i in img:
  re.urlretrieve(i,'%s.jpg'%x)
  x += 1

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python executemany的使用及注意事项
Mar 13 Python
django站点管理详解
Dec 12 Python
Python实现的多项式拟合功能示例【基于matplotlib】
May 15 Python
python opencv 读取本地视频文件 修改ffmpeg的方法
Jan 26 Python
详解Python字符串切片
May 20 Python
python实现通过队列完成进程间的多任务功能示例
Oct 28 Python
Django继承自带user表并重写的例子
Nov 18 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
对python中return与yield的区别详解
Mar 12 Python
python变量的作用域是什么
May 26 Python
如何基于Python代码实现高精度免费OCR工具
Jun 18 Python
Python中的tkinter库简单案例详解
Jan 22 Python
Python中defaultdict与lambda表达式用法实例小结
Apr 09 #Python
Python3 实现随机生成一组不重复数并按行写入文件
Apr 09 #Python
python生成不重复随机数和对list乱序的解决方法
Apr 09 #Python
解决Python的str强转int时遇到的问题
Apr 09 #Python
Python利用matplotlib.pyplot绘图时如何设置坐标轴刻度
Apr 09 #Python
Python序列循环移位的3种方法推荐
Apr 09 #Python
python中将一个全部为int的list 转化为str的list方法
Apr 09 #Python
You might like
PHP5中的时间相差8小时的解决办法
2008/03/28 PHP
php中get_headers函数的作用及用法的详细介绍
2013/04/27 PHP
PHP移动文件指针ftell()、fseek()、rewind()函数总结
2014/11/18 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP常见的6个错误提示及解决方法
2016/07/07 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
2019/05/08 PHP
jquery 提交值不为空的元素示例代码
2013/05/10 Javascript
JS Replace()的高级使用方法介绍
2013/06/29 Javascript
js 调用父窗口的具体实现代码
2013/07/15 Javascript
javascript和jquery修改a标签的href属性
2013/12/16 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
深入理解AngularJS中的ng-bind-html指令和$sce服务
2016/09/08 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
angularJS 指令封装回到顶部示例详解
2017/01/22 Javascript
node实现简单的反向代理服务器
2017/07/26 Javascript
jquery动态赋值id与动态取id方法示例
2017/08/21 jQuery
解析Vue 2.5的Diff算法
2017/11/28 Javascript
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
JavaScript Canvas实现验证码
2020/08/02 Javascript
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
socket io与vue-cli的结合使用的示例代码
2018/11/01 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
Python入门篇之文件
2014/10/20 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python pillow模块使用方法详解
2019/08/30 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
利用OpenCV中对图像数据进行64F和8U转换的方式
2020/06/03 Python
canvas拼图功能实现代码示例
2018/11/21 HTML / CSS
意大利大型购物中心:Oliviero.it
2017/10/19 全球购物
营销总经理岗位职责
2014/02/02 职场文书
银行贷款承诺书
2014/03/29 职场文书
结婚通知短信怎么写
2015/04/17 职场文书
离婚代理词范文
2015/05/23 职场文书
nginx配置proxy_pass中url末尾带/与不带/的区别详解
2021/03/31 Servers
JavaWeb Servlet实现网页登录功能
2021/07/04 Java/Android
MySQL定时备份数据库(全库备份)的实现
2021/09/25 MySQL