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之再深点,更懂list
Sep 20 Python
python自然语言编码转换模块codecs介绍
Apr 08 Python
Python使用multiprocessing创建进程的方法
Jun 04 Python
Python中datetime常用时间处理方法
Jun 15 Python
微信 用脚本查看是否被微信好友删除
Oct 28 Python
Python与R语言的简要对比
Nov 14 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
TensorFlow Session会话控制&amp;Variable变量详解
Jul 30 Python
Python 实现数据结构-循环队列的操作方法
Jul 17 Python
python中enumerate() 与zip()函数的使用比较实例分析
Sep 03 Python
pycharm永久激活超详细教程
Oct 29 Python
python 爬取京东指定商品评论并进行情感分析
May 27 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
收音机术语解释
2021/03/01 无线电
PHP实现文件安全下载
2006/10/09 PHP
判断Keep-Alive模式的HTTP请求的结束的实现代码
2011/08/06 PHP
PHP 输出URL的快捷方式示例代码
2013/09/22 PHP
PHP与Java进行通信的实现方法
2013/10/21 PHP
php操作xml入门之xml标签的属性分析
2015/01/23 PHP
Yii实现自动加载类地图的方法
2015/04/01 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
php检查函数必传参数是否存在的实例详解
2017/08/28 PHP
PHP实现的二分查找算法实例分析
2017/12/19 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
JQuery团队打造的javascript单元测试工具QUnit介绍
2010/02/26 Javascript
JS面向对象编程之对象使用分析
2010/08/19 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
15款jQuery分布引导插件分享
2015/02/04 Javascript
jquery.validate使用时遇到的问题
2015/05/25 Javascript
js实现人才网站职位选择功能的方法
2015/08/14 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
详解Angular.js数据绑定时自动转义html标签及内容
2017/03/30 Javascript
Vue2.0学习之详解Vue 组件及父子组件通信
2017/12/12 Javascript
jQuery使用动画队列自定义动画操作示例
2018/06/16 jQuery
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
node 版本切换的实现
2020/02/02 Javascript
Vue路由权限控制解析
2020/11/09 Javascript
Vue 组件注册全解析
2020/12/17 Vue.js
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
python中argparse模块用法实例详解
2015/06/03 Python
python tornado微信开发入门代码
2018/08/24 Python
简单介绍python封装的基本知识
2019/08/10 Python
Python项目跨域问题解决方案
2020/06/22 Python
python中if嵌套命令实例讲解
2021/02/25 Python
New Balance澳大利亚官网:运动鞋和健身服装
2019/02/23 全球购物
如何强制垃圾回收
2015/10/06 面试题
求职信内容怎么写
2014/05/26 职场文书
先进单位事迹材料
2014/12/25 职场文书
酒店优秀员工推荐信
2015/03/24 职场文书