1.准备工作
1.1、安装Python
2.1建立jupyter环境
window+R,输入cmd,进入控制台
pip install jupyter
3.1进入编辑环境
新建一个文件夹,打开文件夹,进入控制台,输入jupyter notebook,即进入编辑环境。
进入编辑环境页面
2.分析网页
2.1 打开豆瓣电影top250网页
2.2 分析网页结构
查看每一页网页的url,分析它的规律
可以看出,从第二页开始,URL不同的都是’start='后面这个数,并且基数都为25。则可以分析出第一页为:https://movie.douban.com/top250?start=0&filter=
2.3 用for循环分析结果
也可用for循环来分析,结果如下:
for page in range(0,226,25):
print (page)
2.4 用page函数表示这十页的URL链接
代码如下:
for page in range(0,226,25):
url= 'https://movie.douban.com/top250?start=%s&filter='%page
print (url)
结果如下:
3.爬取网页
3.1 请求HTML源代码
首先,安装requests,(win+R—输入cmd—pip install requests—enter),结果如下:
请求HTML以第一页为例:
import requests
test_url='https://movie.douban.com/top250?start=0&filter='
注:此处单引号也可以改为双引号,目的是将test_url变为字符串。
3.2 到TOP250上对代码进行审查
右击—检查元素—network—All—刷新,打开如下:
3.3 请求网页及请求方法
首先点击第一个网址,再点击header,由图中可以知道请求网址及方法:
代码如下:
import requests
test_url='https://movie.douban.com/top250?start=0&filter='
requests.get(url=test_url)
结果如下:
若改为:
import requests
test_url='https://movie.douban.com/top250?start=0&filter='
requests.get(url=test_url).text
同样没有返回值。
则是因为浏览器识别出这个语句为爬虫程序,所以拒绝返回值给我们。
3.4 伪装浏览器
伪装浏览器主要是用来躲过浏览器识别,便于成功获取数据。
首先将代码审查中的用户代理复制到请求代码中,用于伪装。
用户代理为:
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36
代码表示如下:
import requests
test_url='https://movie.douban.com/top250?start=0&filter='
#设置浏览器代理,它是一个字典
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3724.8 Safari/537.36'
}
#请求源代码向服务器发出请求
requests.get(url=test_url,headers = headers).text
结果如下:
4.信息筛选
分析工具有:
xpath,re(正则表达式),BeautifulSoup,即BS4。
4.1 安装lxml库
win+R—输入cmd—pip install lxml—enter),结果如下:
4.2 过滤
代码如下:
from lxml import etree
html_etree = etree.HTML(reponse)
#reponse=requests.get(url=test_url,headers = headers).text
print ( html_etree)
html_etree可任意命名,HTML必须为大写。
运行结果如下:
4.3 从网页上提取信息
以泰坦尼克号为例
代码如下:
from lxml import etree
html_etree = etree.HTML(reponse)
#reponse=requests.get(url=test_url,headers = headers).text
#过滤
html_etree.xpath('//*[@id="content"]/div/div[1]/ol/li[6]/div/div[2]/div[1]/a/span[1]/text()'
结果如下:
4.4 提取整个网页的xpath路径
打开网页—检查—li
如图所示:
将每一个电影的xpath路径复制下来,可得:
用语句表达为:
li = html_etre