爬虫基础

urllib,urllib2,re都是python自带的模块

urllib,urllib2区别是urllib2可以接受一个Request类的实例来设置url请求的headers,即可以模拟浏览器访问url

而urllib仅可以技术url,不可以伪装user-agent字符串等,urllib提供的urlencode方法用来get查询字符串的产生,所以要搭配使用,但urllib2使用的更广泛

re是正则表达式模块,用来分析网站信息

(.*?)是常用的匹配模式,匹配出了换行符以外的字符,是非贪婪模式,读取最少的匹配信息

在编译模式中是用re.S可以让(.*?)匹配任意字符,包括换行符。

一个简单的例子

import urllib2,re

def getPage(url):

  try:

    request = urllib2.Request(url, headers=headers)

    response = urllib2.urlopen(request, data, timeout)

    page = response.read()

  except Exception, e:

    print e

  return page

headers,data,timeout可以根据需要来填写

下载图片urllib.urlretrieve(url, "name.jpg")

try:

except Exception, e:

  print e

捕获所有异常并打印异常信息

基础教程http://cuiqingcai.com/1052.html

由于re模块不美观,后面学习了BeautifulSoup的使用

安装BeautifulSoup

pip install BeautifulSoup4

相关用法https://cuiqingcai.com/1319.html

基本实例

from bs4 import BeautifulSoup

def getMessage(page):

  soup = BeautifulSoup(page)

  parent = soup.find_all()

  if parent:

    for child in parent:

      do somthing

  else:

    print "parent not found"

逐层查找先find()在find_all()

由于urllib2只能操作静态网站,为了爬动态网站,可以使用selenium工具,selenium是可以用脚本打开浏览器进行爬虫的工具

由于selenium3会遇到各种问题,所以使用selenium2.53.6

安装selenium2.53.6

pip install selenium==2.53.6

selenium和firefox或chrome或IE等等浏览器混合使用

由于firefox版本不同会遇到不兼容问题,所以使用firefox46.0.1

基本实例

from selenium import webdriver

browser = webdriver.Firefox()

browser.get("http://www.baidu.com")

打开网站后就可以用bs或者re来分析网站信息

在学习过程中发现了一个爬虫框架scrapy,感觉挺好用的

安装scrapy

安装scrapy有点麻烦需要安装各种库

下载教程http://blog.csdn.net/php_fly/article/details/19364913

其中的zope.interface可以通过pip install zope.interface来安装,其他的库可以直接从云盘下载exe文件安装

在python中import各种模块验证是否安装成功

最后一步pip install Scrapy

在命令行中输入scrapy验证是否安装成功

基础教程http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/tutorial.html

基本实例

import scrapy

class DmozSpider(scrapy.Spider):
name = "dmoz"
allowed_domains = ["dmoz.org"]
start_urls = [
"http://www.dmoz.org/Computers/Programming/Languages/Python/Books/",
"http://www.dmoz.org/Computers/Programming/Languages/Python/Resources/"
] def parse(self, response):
filename = response.url.split("/")[-2]
with open(filename, 'wb') as f:
f.write(response.body)

dir(),查看当前对象的所有可用方法,type()查看当前对象的类型

sys.exit(),os.exit()用来退出进程,第一个常用

yield关键词,此关键词的作用是返回某个对象后继续执行。如果不用该关键字,则直接会在函数中返回。

python爬虫学习记录的更多相关文章

  1. Python爬虫学习记录【内附代码、详细步骤】

    引言: 昨天在网易云课堂自学了<Python网络爬虫实战>,视频链接 老师讲的很清晰,跟着实践一遍就能掌握爬虫基础了,强烈推荐! 另外,在网上看到一位学友整理的课程记录,非常详细,可以优先 ...

  2. python爬虫学习记录——各种软件/库的安装

    Ubuntu18.04安装python3-pip 1.apt-get update更新源 2,ubuntu18.04默认安装了python3,但是pip没有安装,安装命令:apt install py ...

  3. python爬虫学习(1) —— 从urllib说起

    0. 前言 如果你从来没有接触过爬虫,刚开始的时候可能会有些许吃力 因为我不会从头到尾把所有知识点都说一遍,很多文章主要是记录我自己写的一些爬虫 所以建议先学习一下cuiqingcai大神的 Pyth ...

  4. 《Python爬虫学习系列教程》学习笔记

    http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己 ...

  5. Python爬虫个人记录(三)爬取妹子图

    这此教程可能会比较简洁,具体细节可参考我的第一篇教程: Python爬虫个人记录(一)豆瓣250 Python爬虫个人记录(二)fishc爬虫 一.目的分析 获取煎蛋妹子图并下载 http://jan ...

  6. Python爬虫个人记录(二) 获取fishc 课件下载链接

    参考: Python爬虫个人记录(一)豆瓣250 (2017.9.6更新,通过cookie模拟登陆方法,已成功实现下载文件功能!!) 一.目的分析 获取http://bbs.fishc.com/for ...

  7. [转]《Python爬虫学习系列教程》

    <Python爬虫学习系列教程>学习笔记 http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多. ...

  8. python爬虫学习 —— 总目录

    开篇 作为一个C党,接触python之后学习了爬虫. 和AC算法题的快感类似,从网络上爬取各种数据也很有意思. 准备写一系列文章,整理一下学习历程,也给后来者提供一点便利. 我是目录 听说你叫爬虫 - ...

  9. Python爬虫学习:三、爬虫的基本操作流程

    本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将 ...

随机推荐

  1. iOS:详细的正则表达式

    1.简介: 在项目中,正则的使用是很普遍的,例如登录账号和密码(手机号.邮箱等).用到的方法就是谓词对象过滤:NSPredicate. 2.什么是正则表达式: 正则表达式,又称正规表示法,是对字符串操 ...

  2. jboss\server\default\.\tmp 拒绝访问 axis2

    下载axis2.war包. 下载jboss-4.2.3.GA.zip和jboss-5.0.1.GA.zip两个包并解压. 配置JDK后要配置JBOSS_HOME的环境变量,在Path中配置%JBOSS ...

  3. 压测 502 日志报错 upstream timed out (110: Connection timed out)

    环境介绍 服务器:centos6.5服务:nginx proxy 问题描述: 压测 开发同事 的开发环境项目没事,但是 线上机器 命中%50 ,大量502 php的某些页面打不开,页面提示gatewa ...

  4. gcc选项-g与-rdynamic的异同_转

    转自:http://www.tuicool.com/articles/EvIzUn gcc 的 -g ,应该没有人不知道它是一个调试选项,因此在一般需要进行程序调试的场景下,我们都会加上该选项,并且根 ...

  5. Go 性能分析

    上线一定要用压力测试,才能知道自己的承受度是多少,不然出了问题,就各种排查. http://www.tuicool.com/articles/NVRJrm 通过jmeter压力测试,发现打印请求参数消 ...

  6. hibernate主键生成机制与save返回

    主键生成机制为assigned时,save之后通过get得不到id(主键),使用identity可以. hibernate主键生成机制1) assigned主键由外部程序负责生成,无需Hibernat ...

  7. IntelliJ IDEA 常用设置讲解1

    IntelliJ IDEA 有很多人性化的设置我们必须单独拿出来讲解,也因为这些人性化的设置让我们这些 IntelliJ IDEA 死忠粉更加死心塌地使用它和分享它. 常用设置 IntelliJ ID ...

  8. centos 6.4下安装postgresql 9.2

    我的linux版本是centos 6.4 ,准备安装postgresql 9.2 根据官方说明: http://www.postgresql.org/download/linux/redhat/ 缺省 ...

  9. PostgreSQL9.1 upgrade to PostgreSQL9.5rc1

    PostgreSQL9.1.0 upgrade to PostgreSQL9.5rc1 安装PG9.1端口为5432 [pgup@minion1 pg]$ ls postgresql-9.1.0.ta ...

  10. 使用Mac的AppleScritp调用控制台的方式

    使用Mac的AppleScritp调用 控制台的方法 tell application "Terminal" activate do script "cd Documen ...