爬虫这个听起来很 hack 的名字,是我学习 python 的诱因.当 python 基础学习到一定程度(基本语法,数据类型掌握) 就可以开启自己的小爬虫了.毕竟实践才是提高的最快途径.废话说完了,下面直接开始:
廖凯峰的 python 基础教程
做爬虫需要几步呢? 概况来说需要两步:
第一步是从网络上获取数据(大部分是html)
第二步就是解析数据
1. 从网站获取数据
这里我使用 requests 模块来代替内建模块 urllib
import requests
import random
url = 'http://www.weather.com.cn/weather/101010100.shtml' # 数据地址,从浏览器copy
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Accept-Encoding': 'gzip, deflate, sdch',
'Accept-Language': 'zh-CN,zh;q=0.8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.104 Safari/537.36 Core/1.53.3226.400 QQBrowser/9.6.11681.400'
}
timeout = random.choice(range(80, 180)) # 超时时间
req = requests.get(url, headers=header, timeout=timeout)
req.encoding = 'utf-8' # 防止中文乱码
code = req.status_code # 返回状态,200代表OK
print(code)
header 的作用: requests模块可以非常方便地抓取URL内容,也就是发送一个GET请求到指定的服务器获取界面,而浏览器在发送请求的时候会携带一些基本的信息作为 header 传递给服务器.服务器会根据 header 里的信息来判断如何返回数据,或者返回什么类型的数据,例如返回的数据是否可以压缩,是否返回移动端展示的界面.因此为了避免不必要的错误,在发送GET请求时,最好带上header.至于header的内容,可以通过浏览器调试,或者fiddler获取.
这时我们获得了想要的数据,可以用 print(req.text)
查看
2. 解析数据
我们用 bs4 模块来解析获得的数据
当我们利用print(req.text)
打印数据后,会发现整整有1000多行.其实这些数据就是在浏览器中查看网页源码的数据.为了方便的找