美文网首页
简单爬虫入门

简单爬虫入门

作者: __Cool | 来源:发表于2017-12-31 20:10 被阅读12次

看见有意思的图片想保存到本地,可以用 python 进行批量爬取下载,以下代码以煎蛋网(http://jandan.net/)为例,对煎蛋网的某一页面进行爬取。

库介绍

python 自带标准库:urllib (用于下载文件)
python 第三方库:BeautifulSoup (解析 html 代码)
Requests (用于向服务器请求资源 )

伪装

现在的许多网站都有自己的一套反爬机制,但因为小网站的反爬机制不高,所以做个初级伪装就可以开始爬取数据了,爬虫中常用的手段就是伪装成一个浏览器,在浏览器中打开网站调试工具找到需要的 User-AgentCookie,构造成一个字典:

import requests,urllib
from bs4 import BeautifulSoup
header = {
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36',
    'Cookie': 'jdna = 01b0531fab6a989460dd1b231010b496  #1492434771779; Hm_lvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1492430829,1492430927,1492430979; Hm_lpvt_fd93b7fb546adcfbcf80c4fc2b54da2c=1492434773; _ga=GA1.2.1686071134.1492430830; _gat=1'}

作为下面代码的参数传入。

向网站发起请求
url = 'http://jandan.net/ooxx/page-0'
code = requests.get(url,header)

get 函数传入两个参数,第一个是网站的 url ,第二个是伪装成浏览器的字典参数。

解析

请求发送完毕后,服务器给我们返回一堆信息,有状态码,有网页实体内容等,下面开始解析:

plain_text = code.text
Soup = BeautifulSoup(plain_text, 'lxml') # 实例化解析器Soup
download_links = []
folder_path = 'C://Users/Stone/Desktop/jiandan/' # 存储位置
for pic_tag in Soup.select('p > img'):    # 获取图片下载链接
    pic_link = 'http:' + pic_tag.get('src') # 拼接下载链接
    download_links.append(pic_link)      #  存入列表

这段代码中,实例化 html 解析器,然后将每张图片的地址给保存在一个列表里,其中采用了 bs4 中的 select() 方法,寻找所有具有 p > img 结构的标签。

开始下载 & 成果展
for item in download_links:
    urllib.urlretrieve(item, folder_path + item[-10:])
print '此页面下载完成!'

其中用到的是标准库 urlliburlretrieve() 方法,进行下载操作,第一个参数是图片 url ,第二个参数是文件名。下载结果如下:

jiandan.png

参考资料:

BeautifulSoup 中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc/

Requests 中文文档:http://cn.python-requests.org/zh_CN/latest/

相关文章

网友评论

      本文标题:简单爬虫入门

      本文链接:https://www.haomeiwen.com/subject/bqbagxtx.html