前言
大数据分析自然需要大量的数据,爬虫是获取数据的一种途径,Python是十分适合写爬虫的语言,Scrapy是Python的一个高级爬虫框架,那么学习Scrapy之前先简单实现一些爬虫例子,本文记录作者第一次实现爬虫。
未成年人请酌情阅读
正文
首先当然要安装Python了,作者使用Python2.7.14,IDE使用PyCharm,需要准备的模块有requests、re、lxml(可以通过pip下载或者在PyCharm里面下载),软件配置和运行什么的请另找教程。
那么准备爬取哪些网站呢?第一次操作我选择一个比较特殊的网站http://hotpics.cc/
,这是一个有大量图片的成人网站,而且结构比较简单,我们今天将里面的图片爬取并保存到本地。
首先观察网站的页数,翻页时网址变化为http://hotpics.cc/page/2/
显然页数就是后面那个数字。然后用Chrome分析网站图片的代码,审查元素指向图片,容易发现图片url都在名为figure的标签内,那么我们先把figure标签提取出来再把图片的url提取出来就行了,提取标签当然是用强大的XPATH实现
先放代码
# coding=utf-8
from lxml import etree
from multiprocessing.dummy import Pool as ThreadPool
import requests
import re
import sys
import time
reload(sys)
sys.setdefaultencoding("utf-8")
def spider(url):
print url
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'}
html = requests.get(url, headers=headers) #伪装成浏览器
selector = etree.HTML(html.text) #将网页html变成树结构,用于xpath
content = selector.xpath('//figure[@class="post-image "]') #提取figure标签
for each in content:
tmp = each.xpath('a/img/@src')#把img标签的src属性提取出来
pic = requests.get(tmp[0])#访问图片
print 'downloading: ' + tmp[0]
string = re.search('\d+/\d+/(.*?)\\.jpg', str(tmp[0])).group(1) #正则表达式匹配图片名字
fp=open('pic2\\'+string+'.jpg','wb')#放到pic2文件夹内,要自己创建
fp.write(pic.content)
fp.close
if __name__ == '__main__':
pool = ThreadPool(2) #双核电脑
tot_page = []
for i in range(1,11): #提取1到10页的内容
link = 'http://hotpics.cc/page/' + str(i)
tot_page.append(link)
pool.map(spider, tot_page)#多线程工作
pool.close()
pool.join()
然后运行一下,一个简单的爬虫爬取图片的例子就完成了(`・ω・´)