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 相关文章推荐
忘记ftp密码使用python ftplib库暴力破解密码的方法示例
Jan 22 Python
在Python的Django框架中simple-todo工具的简单使用
May 30 Python
Python实现合并字典的方法
Jul 07 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
PYTHON压平嵌套列表的简单实现
Jun 08 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
pandas.read_csv参数详解(小结)
Jun 21 Python
python实现屏保程序(适用于背单词)
Jul 30 Python
编写python代码实现简单抽奖器
Oct 20 Python
Python修改DBF文件指定列
Dec 19 Python
python实现学生通讯录管理系统
Feb 25 Python
python3读取文件指定行的三种方法
May 24 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
phpMyAdmin2.11.6安装配置方法
2008/08/24 PHP
PHPMyadmin 配置文件详解(配置)
2009/12/03 PHP
Smarty的配置与高级缓存技术分享
2012/06/05 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
php与flash as3 socket通信传送文件实现代码
2014/08/16 PHP
PHP中通过fopen()函数访问远程文件示例
2014/11/18 PHP
php微信开发之关注事件
2018/06/14 PHP
PHP CURL中传递cookie的方法步骤
2019/05/09 PHP
js 利用className得到对象的实现代码
2011/11/15 Javascript
JQuery中的事件及动画用法实例
2015/01/26 Javascript
JS实现的简洁二级导航菜单雏形效果
2015/10/13 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
jQuery子元素过滤选择器用法示例
2016/09/09 Javascript
vue模板语法-插值详解
2017/03/06 Javascript
Vue实现购物车功能
2017/04/27 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
AngularJs分页插件使用详解
2018/06/30 Javascript
vue实现动态显示与隐藏底部导航的方法分析
2019/02/11 Javascript
python 随机数生成的代码的详细分析
2011/05/15 Python
python筛选出两个文件中重复行的方法
2018/05/31 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
Pureology官网:为染色头发打造最好的产品
2019/09/13 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
linux面试题参考答案(6)
2014/08/29 面试题
EJB timer的种类
2014/10/28 面试题
3.12植树节活动总结2014
2014/03/13 职场文书
医院义诊活动总结
2014/07/04 职场文书
酒店周年庆活动方案
2014/08/21 职场文书
环卫工作个人总结
2015/03/04 职场文书
运动会通讯稿200字
2015/07/20 职场文书
2016春季小学开学寄语
2015/12/03 职场文书
浙江省杭州市平均工资标准是多少?
2019/07/09 职场文书
Django+Celery实现定时任务的示例
2021/06/23 Python
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python