Python爬虫-爬取贴吧中每个帖子内的楼主图片

简介: 1.根据输入的关键字筛选贴吧 2.获得贴吧内的帖子,支持分页爬取 3.爬取并下载帖子内仅和楼主相关的图片
+关注继续查看


# -*- coding:utf-8 -*-

import urllib.request
from lxml import etree


def loadPage(url):
	"""
	 作用:根据url发送请求,获取服务器响应文件
	 url: 需要爬取的url地址
	"""
	# headers = {"User-Agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11"}
	
	request = urllib.request.Request(url)
	html = urllib.request.urlopen(request).read()
	# 解析HTML文档为HTML DOM模型
	content = etree.HTML(html)
	# print content
	# 返回所有匹配成功的列表集合
	link_list = content.xpath('//div[@class="t_con cleafix"]/div/div/div/a/@href')
	
	# link_list = content.xpath('//a[@class="j_th_tit"]/@href')
	for link in link_list:
		fulllink = "http://tieba.baidu.com" + link
		# 组合为每个帖子的链接
		# print link
		loadImage(fulllink)


# 取出每个帖子里的每个图片连接
def loadImage(link):
	headers = {
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
	request = urllib.request.Request(link, headers=headers)
	html = urllib.request.urlopen(request).read()
	# 解析
	content = etree.HTML(html)
	# 取出帖子里每层层主发送的图片连接集合
	# link_list = content.xpath('//img[@class="BDE_Image"]/@src')
	# link_list = content.xpath('//div[@class="post_bubble_middle"]')
	link_list = content.xpath('//img[@class="BDE_Image"]/@src')
	# 取出每个图片的连接
	for link in link_list:
		print("link:" + link)
		writeImage(link)


def writeImage(link):
	"""
	 作用:将html内容写入到本地
	 link:图片连接
	"""
	# print "正在保存 " + filename
	headers = {
		"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"}
	# 文件写入
	request = urllib.request.Request(link, headers=headers)
	# 图片原始数据
	image = urllib.request.urlopen(request).read()
	# 取出连接后10位做为文件名
	filename = link[-10:]
	# 写入到本地磁盘文件内
	with open("/Users/didi/Downloads/crawlertest/" + filename, "wb") as f:
		f.write(image)
	# print("已经成功下载 " + filename)


def tiebaSpider(url, beginPage, endPage):
	"""
	 作用:贴吧爬虫调度器,负责组合处理每个页面的url
	 url : 贴吧url的前部分
	 beginPage : 起始页
	 endPage : 结束页
	"""
	for page in range(beginPage, endPage + 1):
		pn = (page - 1) * 50
		filename = "第" + str(page) + "页.html"
		print(filename)
		fullurl = url + "&pn=" + str(pn)
		print(fullurl)
		loadPage(fullurl)
		# print html
		
		print("下载完成")


if __name__ == "__main__":
	kw = input("请输入需要爬取的贴吧名:")
	beginPage = int(input("请输入起始页:"))
	endPage = int(input("请输入结束页:"))
	
	url = "http://tieba.baidu.com/f?"
	key = urllib.parse.urlencode({"kw": kw})
	fullurl = url + key
	tiebaSpider(fullurl, beginPage, endPage)


目录
相关文章
|
2月前
|
数据采集 Python
|
2月前
|
数据采集 Java
java随机姓名 根据网络爬虫爬取百家姓和名字
java随机姓名 根据网络爬虫爬取百家姓和名字
35 0
|
2月前
|
数据采集 存储 安全
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
Python爬虫实战:利用代理IP爬取某瓣电影排行榜并写入Excel(附上完整源码)
|
3月前
|
数据采集 JSON 前端开发
python爬虫中“动态网页”如何爬取
python爬虫中“动态网页”如何爬取
|
4月前
|
数据采集
【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
【详细步骤解析】爬虫小练习——爬取豆瓣Top250电影,最后以csv文件保存,附源码
138 0
|
4月前
|
数据采集 存储 机器人
网络爬虫的入门及爬取图片,文章,音频
>持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第22天,[点击查看活动详情](https://juejin.cn/post/7147654075599978532 "https://juejin.cn/post/7147654075599978532") # 引言 今天带来一篇python的网络爬虫 # 网络爬虫的介绍 > 网络爬虫(又称为网页蜘蛛,[网络](https://baike.baidu.com/item/%E7%BD%91%E7%BB%9C/143243?fromModule=lemma_inlink)机器人,在[FOAF](https://bai
|
5月前
|
数据采集 编解码 Python
Python爬虫实战(4) | 爬取历年中国电影票房排行榜
看了看后台,发现之前写的几篇有关爬虫实战的文章特别受欢迎,阅读量都是好几千那种 然后回头发现自己好久没写爬虫了,刚好写了个小小的爬虫 demo ,今天分享给大家
|
5月前
|
数据采集 Web App开发 JavaScript
Python爬虫实战(5) | 爬取知网文献信息
Python爬虫实战(5) | 爬取知网文献信息
|
8月前
|
存储 数据采集 关系型数据库
python爬虫爬取房源信息
写这篇博客的原因是在我爬取房产这类数据信息的时候,发现csdn中好多博主写的关于此类的文章代码已经不适用,因为好多房产网站代码已经更改,使用老的代码明显爬取不到所需要的房产信息。......
153 1
python爬虫爬取房源信息
|
9月前
|
数据采集 存储 JSON
「Python」爬虫-9.Scrapy框架的初识-公交信息爬取
本文将讲解如何使用scrapy框架完成北京公交信息的获取。
440 0
相关产品
云迁移中心
推荐文章
更多