python 爬取静态网页内容
利用python库 requests 和 BeautifulSoup ,对静态网页内容爬取;
这里给出的例子是对一个天气网站的历史天气进行爬取;
待更新
原理
获取网页内容
一般网页都会有 robots.txt 文件,用来记录用户对数据和表单内容的权限。直接在主页后面加 /robots.txt 即可访问到。
例如这里爬取的网页:http://tianqi.2345.com/robots.txt
robots.txt 的内容
User-agent: *
Disallow: /css/dhtmlxchart.css
Disallow: /o/
Disallow: /d/
Disallow: /*/*/Scripts/expressInstall.swf
Disallow: /indexs.htm
Disallow: /t/city/
Disallow: /t/city_m/
Disallow: /t/city_m2/
Disallow: /t/_s/
Disallow: /t/air/
Disallow: /t/today/
Disallow: /t/tomorrow/
Disallow: /t/typhoon/
Disallow: /t/wea_history/
Disallow: /t/wea_hour/
Disallow: /t/timezone/
Disallow: /t/detect2009v2.php
Disallow: /news/
Disallow: /s/
Disallow: /t/news/
Disallow: /life/
Disallow: /t/life/
Disallow: /t/lifenews/
Disallow: *.htm?*
Disallow: *php?*
Disallow: *?*
Disallow: *index*
Disallow: /t/shikuang/alert/
Disallow: *?from=lm*
Sitemap: http://tianqi.2345.com/baidu/SitemapIndex.xml
这里简单的解释下:
User-agent: * 表示下列内容权限对于所有临时用户 (也就是对所有的搜索引擎);
Disallow: /t/wea_history/ 表示对 /t/wea_history/ 路径下的所有内容 禁止访问;
由于××网页禁止直接访问历史温度数据,用requests.get()得到的网页内容只能获取当天的温度表,历史温度表单是动态加载的。这里采用的方法是直接在当月查询页面下用浏览器右键菜单保存静态网页到本地,发现保存的网页文件中包含了当月的历史数据。
解析网页内容
正则表达式提取
附python代码
''' python 依赖库
'''
import requests
from bs4 import BeautifulSoup
import re
import pandas as pd
import os
import sys
#构造类
import re
import pandas as pd
import requests
from bs4 import BeautifulSoup
class spyder:
''' 从××天气网页爬取天气信息
'''