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进阶教程之函数参数的多种传递方法
Aug 30 Python
Python进阶篇之字典操作总结
Nov 16 Python
Python搜索引擎实现原理和方法
Nov 27 Python
python写一个md5解密器示例
Feb 23 Python
详谈Python 窗体(tkinter)表格数据(Treeview)
Oct 11 Python
Django框架封装外部函数示例
May 28 Python
python中update的基本使用方法详解
Jul 17 Python
Python tcp传输代码实例解析
Mar 18 Python
django-orm F对象的使用 按照两个字段的和,乘积排序实例
May 18 Python
Python Flask框架实现简单加法工具过程解析
Jun 03 Python
Python应用实现处理excel数据过程解析
Jun 19 Python
看看如何用Python绘制小米新版天价logo
Apr 20 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
第十二节--类的自动加载
2006/11/16 PHP
PHP字符串处理的10个简单方法
2010/06/30 PHP
php获取qq用户昵称和在线状态(实例分析)
2013/10/27 PHP
destoon数据库表说明汇总
2014/07/15 PHP
浅析PHP编程中10个最常见的错误
2014/08/08 PHP
thinkphp普通查询与表达式查询实例分析
2014/11/24 PHP
php正则表达式获取内容所有链接
2015/07/24 PHP
PHP文件缓存类实现代码
2015/10/26 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
2017/11/06 PHP
js 字符串操作函数
2009/07/25 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
JS操作Cookies包括(读取添加与删除)
2012/12/26 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
JavaScript控制网页平滑滚动到指定元素位置的方法
2015/04/17 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
JS基于onclick事件实现单个按钮的编辑与保存功能示例
2017/02/13 Javascript
JS中showModalDialog关闭子窗口刷新主窗口用法详解
2017/03/25 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
浅谈vue路径优化之resolve
2017/10/13 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
详解关闭令人抓狂的ESlint 语法检测配置方法
2019/10/28 Javascript
vue项目中使用eslint+prettier规范与检查代码的方法
2020/01/16 Javascript
[47:43]Alliance vs KG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python中学习K-Means和图片压缩
2017/11/20 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
python实现自动登录
2018/09/17 Python
Python实现爬取并分析电商评论
2020/06/19 Python
美国相机和电子产品零售商:Beach Camera
2020/11/26 全球购物
意向书范本
2014/07/29 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
警用民用对讲机找不同
2022/02/18 无线电
MySQL池化框架学习接池自定义
2022/07/23 MySQL