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字典基本操作实例分析
Jul 11 Python
Python Web程序部署到Ubuntu服务器上的方法
Feb 22 Python
python实现定时自动备份文件到其他主机的实例代码
Feb 23 Python
python 集合 并集、交集 Series list set 转换的实例
May 29 Python
Python脚本按照当前日期创建多级目录
Mar 01 Python
Python小进度条显示代码
Mar 05 Python
django 邮件发送模块smtp使用详解
Jul 22 Python
Python爬虫 批量爬取下载抖音视频代码实例
Aug 16 Python
构建高效的python requests长连接池详解
May 02 Python
python爬取”顶点小说网“《纯阳剑尊》的示例代码
Oct 16 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 Python
如何使用PyCharm及常用配置详解
Jun 03 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
详解php魔术方法(Magic methods)的使用方法
2016/02/14 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
js实现广告漂浮效果的小例子
2013/07/02 Javascript
JS之Date对象和获取系统当前时间详解
2014/01/13 Javascript
Javascript中的call()方法介绍
2015/03/15 Javascript
详解JavaScript的另类写法
2016/04/11 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
jQuery Chart图表制作组件Highcharts用法详解
2016/06/01 Javascript
js判断radiobuttonlist的选中值显示/隐藏其它模块的实现方法
2016/08/25 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
JavaScript中的工厂函数(推荐)
2017/03/08 Javascript
基于vue实现分页/翻页组件paginator示例
2017/03/09 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
Python列表append和+的区别浅析
2015/02/02 Python
使用Python正则表达式操作文本数据的方法
2019/05/14 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
在ipython notebook中使用argparse方式
2020/04/20 Python
Win 10下Anaconda虚拟环境的教程
2020/05/18 Python
python 实现数据库中数据添加、查询与更新的示例代码
2020/12/07 Python
SQL中where和having的区别
2012/06/17 面试题
一份婚庆公司创业计划书
2014/01/11 职场文书
海南地接欢迎词
2014/01/14 职场文书
银行存款证明样本
2014/01/17 职场文书
优秀员工评语
2014/02/10 职场文书
点菜员岗位职责范本
2014/02/14 职场文书
政法学院毕业生求职信
2014/02/28 职场文书
竞选部长演讲稿
2014/04/26 职场文书
公司合作意向书范文
2014/07/30 职场文书
2014年城管个人工作总结
2014/12/08 职场文书
主持人开幕词
2015/01/29 职场文书
研究生简历自我评
2015/03/11 职场文书
信用卡工资证明范本
2015/06/19 职场文书
摘录式读书笔记
2015/07/01 职场文书
Java实现简易的分词器功能
2021/06/15 Java/Android
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技