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 14 Python
简单介绍使用Python解析并修改XML文档的方法
Oct 15 Python
浅谈Python 字符串格式化输出(format/printf)
Jul 21 Python
python 删除大文件中的某一行(最有效率的方法)
Aug 19 Python
Python生成任意范围任意精度的随机数方法
Apr 09 Python
对python requests的content和text方法的区别详解
Oct 11 Python
Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】
Dec 05 Python
python画图把时间作为横坐标的方法
Jul 07 Python
PyTorch 普通卷积和空洞卷积实例
Jan 07 Python
python中round函数如何使用
Jun 19 Python
Python使用lambda抛出异常实现方法解析
Aug 20 Python
python 匿名函数与三元运算学习笔记
Oct 23 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 生成饼图 三维饼图
2009/09/28 PHP
[原创]php求圆周率的简单实现方法
2016/05/30 PHP
ie focus bug 解决方法
2009/09/03 Javascript
jQuery实现用方向键控制层的上下左右移动
2013/01/13 Javascript
JavaScript简介
2015/02/15 Javascript
jQuery解析XML 详解及方法总结
2016/09/28 Javascript
使用原生的javascript来实现轮播图
2017/02/24 Javascript
JQuery 获取Dom元素的实例讲解
2017/07/08 jQuery
angular.js + require.js构建模块化单页面应用的方法步骤
2017/07/19 Javascript
详解jquery插件jquery.viewport.js学习使用方法
2017/09/08 jQuery
微信小程序自定义可滑动顶部TabBar选项卡实现页面切换功能示例
2019/05/14 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
适用于 Vue 的播放器组件Vue-Video-Player操作
2020/11/16 Javascript
简单说明Python中的装饰器的用法
2015/04/24 Python
Python读取本地文件并解析网页元素的方法
2018/05/21 Python
python破解zip加密文件的方法
2018/05/31 Python
Pycharm如何打断点的方法步骤
2019/06/13 Python
python设计微型小说网站(基于Django+Bootstrap框架)
2019/07/08 Python
Python切割图片成九宫格的示例代码
2020/03/10 Python
python 实现一个图形界面的汇率计算器
2020/11/09 Python
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
2018/03/02 HTML / CSS
新西兰最大的天然保健及护肤品网站:HealthPost(直邮中国)
2021/02/13 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
什么是动态端口(Dynamic Ports)?动态端口的范围是多少?
2014/12/12 面试题
人力资源管理专业毕业生自我评价
2013/09/21 职场文书
医学专业五年以上个人求职信
2013/12/03 职场文书
高中英语教学反思
2014/02/04 职场文书
2014社区三八妇女节活动总结
2014/03/01 职场文书
职工代表大会主持词
2014/04/01 职场文书
财务经理岗位职责
2015/01/31 职场文书
年底个人总结范文
2015/03/10 职场文书
道歉信范文
2015/05/12 职场文书
幼儿园六一主持词开场白
2015/05/28 职场文书
导游词之镇江西津古渡
2019/11/06 职场文书
MySQL 百万级数据的4种查询优化方式
2021/06/07 MySQL
带你了解Java中的ForkJoin
2022/04/28 Java/Android