前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >《Python网络爬虫与数据挖掘小课堂》——part2

《Python网络爬虫与数据挖掘小课堂》——part2

作者头像
IT技术小咖
发布2019-11-24 18:20:26
8510
发布2019-11-24 18:20:26
举报
文章被收录于专栏:码上修行

在介绍爬虫及爬取网页或图片之前,大家需要知道如何使用pip快速方便的安装第三方Python库。

上节中我们介绍了Python的安装及基础知识,其中安装Python时程序已经默认安装了pip模块。如果你还没有安装和配置Python,请查看此系列文章part1的内容介绍,注意:老版本的python中只有easy_install,没有pip。

win7系统下,pip的使用方法:

在cmd命令下输入pip help按回车键会显示pip命令的一些帮助,如下:

1)安装库

pip install <package_name>

pip install <package_name>==<version>

如安装numpy,在cmd命令中输入

在光标处输入:pip install numpy 按Enter回车键即开始安装numpy库,这个numpy版本会和你系统安装的Python版本保持一致。

2)升级库 (如果不提供version版本号,升级到最新版本)

pip install --upgrade <package_name>>=<version>

pip install -U <package_name>>=<version>

如pip升级自己:

pip install --upgrade pip

pip install -U pip

3)卸载库

pip uninstall <package_name>

如卸载numpy库:pip install numpy

4)查看已经安装了那些第三方库

pip list

如下:

pip freeze

注:Python第三方库的下载地址:

http://www.lfd.uci.edu/~gohlke/pythonlibs/

在这里找到相应的第三方的及对应的Python版本的库文件下载并通过pip安装成功率更高!

通过Ctrl + F 查找相应的包,如numpy

通过浏览器或迅雷把numpy‑1.11.3+mkl‑cp27‑cp27m‑win_amd64.whl下载下来。

在cmd中输入:

pip install numpy‑1.11.3+mkl‑cp27‑cp27m‑win_amd64.whl

按Enter回车即开始安装。

正式进入爬虫讲解:

下面写一个示例,抓取网页和图片

这节课所依赖的包有:httplib2 、urllib 、selenium

安装方法如下:

pip install httplib2

pip install selenium

其中httplib2中包含urllib库

如安装httplib2

或是通过第三方网站下载相应的包,安装如下

安装selenium库:

安装成功后输入:exit 按Enter退出cmd。

以上Python第三方库安装成功后,开始编写下载网页和图片的脚本

下载网页代码如下:


# coding=utf-8

import urllib

import httplib2

import webbrowser

#以爬取百度网站为例

url = "http://www.baidu.com/"

html = urllib.urlopen(url).read()

open("baidu.html","w").write(html)

#浏览并打开该网站

webbrowser.open_new_tab("baidu.html")


调用的是urllib库里面的urlopen方法,传入一个URL(网址),这个网址是百度首页,协议是HTTP协议,当然你也可以把HTTP换做ftp、file、https 等等,只是代表了一种访问控制协议,urlopen一般接受三个参数,它的参数如下:

urlopen(url, data, timeout)

第一个参数url即为URL,且必填;后两个参数可选。

第二个参数data是访问URL时要传送的数据。

第三个timeout是设置超时时间。

注:data默认为空None,timeout默认为 socket._GLOBAL_DEFAULT_TIMEOUT。 在这个例子里面我们传送了百度首页网址URL,执行urlopen(url)方法之后,返回一个response对象,response对象有一个read()方法,可以返回获取到的网页内容,即通过response.read()方法读取。

webbrowser是Python库的内置模块,webbrowser模块提供了展示基于web文档的高层接口。多数情况下, 简单地调用open() 函数即可。open一般接受三个参数,它的参数如下:

webbrowser.open(url, new=0, autoraise=True)

使用默认的浏览器访问url。如果new等于0,则url会在尽量在已有浏览器窗口打开。如果new等于1, 则打开新的浏览器窗口。new等于2,尽量在浏览器打开新标签(tab)。如果autoraise为True,则浏览器窗口显示在最前面(注意在多数窗口管理器会这样)。

webbrowser.open_new(url) #使用默认的浏览器打开url,尽量只有一个窗口。

webbrowser.open_new_tab(url) #使用默认的浏览器的新tab中打开url。

运行上述脚本:

获取的网页本地保存为"baidu.html",通过默认浏览器打开如下图所示:

下载图片的代码编写,首先要找到图片的url,如下图百度的logo,可以通过Firefox浏览器右键"查看页面源代码"、"查看元素"或按快捷键"F12"来进行定位,不同的浏览器可能不太一样。

在HTML源代码中可以通过Ctrl + F 定位元素位置,定位URL后,再通过urllib库中的函数urlretrieve()直接将远程数据下载到本地。

代码如下:


# coding=utf-8

import os

import urllib

import httplib2

import webbrowser

#爬取在线网站

url = "http://www.baidu.com/"

html = urllib.urlopen(url).read()

open("baidu.html","w").write(html)

#浏览求打开网站

webbrowser.open_new_tab("baidu.html")

#下载图片

logo_url = "https://www.baidu.com/img/bd_logo1.png"

logo_name = os.path.basename(logo_url) #删除路径获取logo图片名字

urllib.urlretrieve(logo_url, logo_name)


运行结果:

运用Selenium库编写简单爬虫,代码如下:


# coding=utf-8

import os

import urllib

# 引入WebDriver包

from selenium import webdriver

# 获取Firefox浏览器对象

driver = webdriver.Firefox()

# 获取Chrome浏览器对象

#driver = webdriver.Chrome()

# 获取IE浏览器对象

#driver = webdriver.Ie()

# 调用get方法来打开百度的url地址

driver.get("https://www.baidu.com/")

print u'当前浏览的URL:'

print driver.current_url # 打印当前浏览的URL网址

print u'\n网页标题:'

print driver.title # 打印当前浏览器页面中的title

# 通过id方式定位界面元素

print u'\n定位元素id:'

txt1 = driver.find_element_by_id("u1").text

print txt1

# 通过xpath表达式定位元素

print u'\n定位元素xpath:'

txt2 = driver.find_element_by_xpath("//div[@id='u1']/a")

print txt2.text

# 退出并关闭浏览器窗口程序

driver.quit()


按F5运行会报错:

Geckodriver executable needs to be in PATH。

Geckodirver的下载地址:https://github.com/mozilla/geckodriver/releases

本机是win7_64bit 所以下载对应的win64版本

报错内容:

代码语言:javascript
复制
WebDriverException:Message:'geckodriver'executable needs to be in Path

geckodriver是一原生态的第三方浏览器,对于selenium3.x版本都会使用geckodriver来驱动firefox,所以需要下载geckodriver.exe。放置在Path 环境变量可以访问到的地方。例如 C:\python2712(本机Python安装的目录)

然后再运行该脚本即可运行成功!结果如下图所示:


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码上修行 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 以上Python第三方库安装成功后,开始编写下载网页和图片的脚本
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档