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判断列表是否已排序的各种方法及其性能分析
Jun 20 Python
python 添加用户设置密码并发邮件给root用户
Jul 25 Python
python opencv设置摄像头分辨率以及各个参数的方法
Apr 02 Python
python中ASCII码和字符的转换方法
Jul 09 Python
详解flask入门模板引擎
Jul 18 Python
10分钟教你用Python实现微信自动回复功能
Nov 28 Python
Python从函数参数类型引出元组实例分析
May 28 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
Oct 12 Python
如何更改 pandas dataframe 中两列的位置
Dec 27 Python
Python中if有多个条件处理方法
Feb 26 Python
Pytest allure 命令行参数的使用
Apr 18 Python
python计算列表元素与乘积详情
Aug 05 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微信公众号开发(4)php实现自定义关键字回复
2016/12/15 PHP
golang 调用 php7详解及实例
2017/01/04 PHP
event.srcElement+表格应用
2006/08/29 Javascript
基于jQuery的树控件实现代码(asp.net+json)
2010/07/11 Javascript
兼容IE和Firefox火狐的上下、左右循环无间断滚动JS代码
2013/04/19 Javascript
js中cookie的添加、取值、删除示例代码
2013/10/21 Javascript
浅谈 jQuery 事件源码定位问题
2014/06/18 Javascript
IE浏览器IFrame对象内存不释放问题解决方法
2014/08/22 Javascript
jQuery制作简单柱状图实例
2015/01/28 Javascript
javascript模拟命名空间
2015/04/17 Javascript
使用jQuery处理AJAX请求的基础学习教程
2016/05/10 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
Vue.js 递归组件实现树形菜单(实例分享)
2016/12/21 Javascript
jQuery zTree树插件动态加载实例代码
2017/05/11 jQuery
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
vue基础之事件v-onclick=&quot;函数&quot;用法示例
2019/03/11 Javascript
js实现特别简单的钟表效果
2020/09/14 Javascript
Python Tkinter简单布局实例教程
2014/09/03 Python
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python中使用items()方法返回字典元素对的教程
2015/05/21 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
Python生成8位随机字符串的方法分析
2017/12/05 Python
机器学习实战之knn算法pandas
2019/06/22 Python
python 爬虫 实现增量去重和定时爬取实例
2020/02/28 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
HTML5 Canvas API中drawImage()方法的使用实例
2016/03/25 HTML / CSS
固特异美国在线轮胎店:Goodyear Tire
2019/02/23 全球购物
灵泰克Java笔试题
2016/01/09 面试题
计算机网络专业个人的自我评价
2013/10/17 职场文书
实习心得体会
2014/01/02 职场文书
汽车专业大学生职业生涯规划范文
2014/01/07 职场文书
工作表扬信
2015/01/17 职场文书
辩护词格式
2015/05/22 职场文书
Nginx反向代理多个服务器的实现方法
2021/03/31 Servers
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python