一、利用webbrowser.open()打开一个网站:

>>> import webbrowser

>>> webbrowser.open('http://i.firefoxchina.cn/?from=worldindex')

True

实例:使用脚本打开一个网页。

所有Python程序的第一行都应以#!python开头,它告诉计算机想让Python来执行这个程序。(我没带这行试了试,也可以,可能这是一种规范吧)

1.从sys.argv读取命令行参数:打开一个新的文件编辑器窗口,输入下面的代码,将其保存为map.py。

2.读取剪贴板内容:

3.调用webbrowser.open()函数打开外部浏览:

#! python3

import webbrowser, sys, pyperclip

if len(sys.argv) > 1:

mapAddress = ''.join(sys.argv[1:])

else:

mapAddress = pyperclip.paste()

webbrowser.open('http://map.baidu.com/?newmap=1&ie=utf-8&s=s%26wd%3D' + mapAddress

注:不清楚sys.argv用法的,请参考这里;不清楚.join()用法的,请参考这里。sys.argv是字符串的列表,所以将它传递给join()方法返回一个字符串。

好了,现在选中'天安门广场'这几个字并复制,然后到桌面双击你的程序。当然你也可以在命令行找到你的程序,然后输入地点。

二、用requests模块从Web下载文件:requests模块不是Python自带的,通过命令行运行pip install request安装。没翻墙是很难安装成功的,手动安装可以参考这里。

>>> import requests

>>> res = requests.get('http://i.firefoxchina.cn/?from=worldindex') #向get中传入一个网址

>>> type(res) #响应对象

>>> print(res.status_code) #响应码

200

>>> res.text #返回的文本

requests中查看网上下载的文件内容的方法还有很多,如果以后的博客用的到,会做说明,在此不再一一介绍。在下载文件的过程中,用raise_for_status()方法可以确保下载确实成功,然后再让程序继续做其他事情。

import requests

res = requests.get('http://i.firefoxchina.cn/?from=worldindex')

try:

res.raise_for_status()

except Exception as exc:

print('There was a problem: %s' % (exc))

三、将下载的文件保存到本地:

>>> import requests

>>> res = requests.get('http://tech.firefox.sina.com/17/0820/10/6DKQALVRW5JHGE1I.html##0-tsina-1-13074-397232819ff9a47a7b7e80a40613cfe1')

>>> res.raise_for_status()

>>> file = open('1.txt', 'wb') #以写二进制模式打开文件,目的是保存文本中的“Unicode编码”

>>> for word in res.iter_content(100000): #iter_content()方法在循环的每次迭代中返回一段bytes数据类型的内容,你需要指定其包含的字节数

file.write(word)

16997

>>> file.close()

四、用BeautifulSoup模块解析HTML:在命令行中用pip install beautifulsoup4安装它。

1.bs4.BeautifulSoup()函数可以解析HTML网站链接requests.get(),也可以解析本地保存的HTML文件,直接open()一个本地HTML页面。

>>> import requests, bs4

>>> res = requests.get('http://i.firefoxchina.cn/?from=worldindex')

>>> res.raise_for_status()

>>> soup = bs4.BeautifulSoup(res.text)

Warning (from warnings module):

File "C:\Users\King\AppData\Local\Programs\Python\Python36-32\lib\site-packages\beautifulsoup4-4.6.0-py3.6.egg\bs4\__init__.py", line 181

markup_type=markup_type))

UserWarning: No parser was explicitly specified, so I'm using the best available HTML parser for this system ("html.parser"). This usually isn't a problem, but if you run this code on another system, or in a different virtual environment, it may use a different parser and behave differently.

The code that caused this warning is on line 1 of the file . To get rid of this warning, change code that looks like this:

BeautifulSoup(YOUR_MARKUP})

to this:

BeautifulSoup(YOUR_MARKUP, "html.parser")

>>> soup = bs4.BeautifulSoup(res.text, 'html.parser')

>>> type(soup)

我这里有错误提示,所以加了第二个参数。

>>> import bs4

>>> html = open('C:\\Users\\King\\Desktop\\1.htm')

>>> exampleSoup = bs4.BeautifulSoup(html)

>>> exampleSoup = bs4.BeautifulSoup(html, 'html.parser')

>>> type(exampleSoup)

2.用select()方法寻找元素:需传入一个字符串作为CSS“选择器”来取得Web页面相应元素,例如:

soup.select('div'):所有名为

的元素;

soup.select('#author'):带有id属性为author的元素;

soup.select('.notice'):所有使用CSS class属性名为notice的元素;

soup.select('div span'):所有在

元素之内的元素;

soup.select('input[name]'):所有名为并有一个name属性,其值无所谓的元素;

soup.select('input[type="button"]'):所有名为并有一个type属性,其值为button的元素。

想查看更多的解析器,请参看这里。

>>> import requests, bs4

>>> res = requests.get('http://i.firefoxchina.cn/?from=worldindex')

>>> res.raise_for_status()

>>> soup = bs4.BeautifulSoup(res.text, 'html.parser')

>>> author = soup.select('#author')

>>> print(author)

[]

>>> type(author)

>>> link = soup.select('link ')

>>> print(link)

[, , , ]

>>> type(link)

>>> len(link)

4

>>> type(link[0])

>>> link[0]

>>> link[0].attrs

{'rel': ['stylesheet'], 'type': 'text/css', 'href': 'css/mozMainStyle-min.css?v=20170705'}

3.通过元素的属性获取数据:接着上面的代码写。

>>> link[0].get('href')

'css/mozMainStyle-min.css?v=20170705

上面这些方法也算是对“网络爬虫”的一些初探。

本文标题: 实例讲解Python爬取网页数据

本文地址: http://www.cppcns.com/jiaoben/python/232320.html

编程python爬取网页数据教程_实例讲解Python爬取网页数据相关推荐

  1. python求三个整数最大值_实例讲解Python中整数的最大值输出

    实例讲解Python中整数的最大值输出 在Python中可以存储很大的值,如下面的Python示例程序: x = 1000000000000000000000000000000000000000000 ...

  2. python输出最大值教程_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

  3. python 系统管理_实例讲解python用户管理系统

    本文主要为大家分享一篇python用户管理系统的实例讲解,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧,希望能帮助到大家. 自定义函数+装饰器,每一个模块写的一个函数 很多地方能用装 ...

  4. python中能够处理的最大整数是_实例讲解Python中整数的最大值输出

    在Python中可以存储很大的值,如下面的Python示例程序: x = 10000000000000000000000000000000000000000000; x = x + 1 print ( ...

  5. python爬虫教程:实例讲解Python爬取网页数据

    这篇文章给大家通过实例讲解了Python爬取网页数据的步骤以及操作过程,有兴趣的朋友跟着学习下吧. 一.利用webbrowser.open()打开一个网站: >>> import w ...

  6. python积木式编程_实例讲解python函数式编程

    函数式编程是使用一系列函数去解决问题,按照一般编程思维,面对问题时我们的思考方式是"怎么干",而函数函数式编程的思考方式是我要"干什么". 至于函数式编程的特点 ...

  7. python中比较运算符怎么使用_实例说明Python中比较运算符的使用

    下表列出了所有Python语言支持的比较操作符.假设变量a持有10和变量b持有20,则: 例如: 试试下面的例子就明白了所有的Python编程语言提供的比较操作符: #!/usr/bin/python ...

  8. pythonproperty装饰器_实例讲解Python编程中@property装饰器的用法

    取值和赋值 class Actress(): def __init__(self): self.name = 'TianXin' self.age = 5 类Actress中有两个成员变量name和a ...

  9. 数据采集技术python网络爬虫项目化教程_数据采集技术Python网络爬虫项目化教程 黄锐军课程资源.zip-KC17.pptx...

    原文件部分截取内容: 1.7.1 Web学生管理程序 Shenzhen Institute Of Information Technology 教师:黄锐军 深圳信息职业技术学院 学生的记录包括学号N ...

最新文章

  1. 烂泥:Thinkpad E40伤不起啊……
  2. LeetCode-剑指 Offer 50. 第一个只出现一次的字符
  3. 聊聊clean code
  4. 【机器学习】机器学习视角下的因果推断
  5. debian及ubuntu挂载本地硬盘的ISO镜像文件
  6. Access-Ctrol-Allow-Headers:*兼容问题导致的跨域失败
  7. 分页插件pageHelpler的使用(ssm框架中)服务器端分页
  8. SQL Server 存储引擎-剖析Forwarded Records
  9. Android增量代码测试覆盖率工具
  10. jenkins 全局工具配置
  11. mysql 5.6.14 win7 32位免安装版配置_mysql 5.6.14 win7 32位免安装版配置
  12. 心跳包、乒乓包、SO_KEEPLIVE
  13. Watir vs Selenium
  14. MTK6589双卡卡1或是卡2拨出电话
  15. 【Vue知识点】路由router详解
  16. JavaWeb——HTTP协议TomcatServlet学习笔记
  17. xxxx cannot be opened for xxxx
  18. MDS(多维尺度变换)
  19. Remo Repair PowerPoint(PPT修复工具)v2.0官方版
  20. 建筑施工员日常工作内容,施工员证全国通用吗?

热门文章

  1. SQL数据导入导出问题总结
  2. 菜渣初探mongodb--笔记篇
  3. 阿里云服务器tomcat配置https
  4. ORA-12545: Connect failed because target host or object does not exist
  5. 生产服务器环境最小化安装后Centos 6.5优化配置备忘
  6. 把普通的git库变成bare库
  7. Eclipse无法连接真机 并非ADB被占用 原因 很2 已解决 记录之
  8. Reading——The Non-Designer's Design Book
  9. 【网址收藏】Ubuntu使用OBS录制桌面时黑屏怎么办?
  10. Win10自带的邮件客户端配置腾讯企业邮箱账号