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)


目录
相关文章
|
6天前
|
数据采集 存储 API
网络爬虫与数据采集:使用Python自动化获取网页数据
【4月更文挑战第12天】本文介绍了Python网络爬虫的基础知识,包括网络爬虫概念(请求网页、解析、存储数据和处理异常)和Python常用的爬虫库requests(发送HTTP请求)与BeautifulSoup(解析HTML)。通过基本流程示例展示了如何导入库、发送请求、解析网页、提取数据、存储数据及处理异常。还提到了Python爬虫的实际应用,如获取新闻数据和商品信息。
|
29天前
|
数据采集 Python
爬虫实战-Python爬取百度当天热搜内容
爬虫实战-Python爬取百度当天热搜内容
65 0
|
1月前
|
数据采集 存储 XML
深入浅出:基于Python的网络数据爬虫开发指南
【2月更文挑战第23天】 在数字时代,数据已成为新的石油。企业和个人都寻求通过各种手段获取互联网上的宝贵信息。本文将深入探讨网络爬虫的构建与优化,一种自动化工具,用于从网页上抓取并提取大量数据。我们将重点介绍Python语言中的相关库和技术,以及如何高效、合法地收集网络数据。文章不仅为初学者提供入门指导,也为有经验的开发者提供进阶技巧,确保读者能够在遵守网络伦理和法规的前提下,充分利用网络数据资源。
|
29天前
|
数据采集 JavaScript 前端开发
实用工具推荐:适用于 TypeScript 网络爬取的常用爬虫框架与库
实用工具推荐:适用于 TypeScript 网络爬取的常用爬虫框架与库
|
16天前
|
数据采集 安全 Python
python并发编程:Python实现生产者消费者爬虫
python并发编程:Python实现生产者消费者爬虫
23 0
python并发编程:Python实现生产者消费者爬虫
|
28天前
|
数据采集 数据挖掘 调度
异步爬虫实践攻略:利用Python Aiohttp框架实现高效数据抓取
本文介绍了如何使用Python的Aiohttp框架构建异步爬虫,以提升数据抓取效率。异步爬虫利用异步IO和协程技术,在等待响应时执行其他任务,提高效率。Aiohttp是一个高效的异步HTTP客户端/服务器框架,适合构建此类爬虫。文中还展示了如何通过代理访问HTTPS网页的示例代码,并以爬取微信公众号文章为例,说明了实际应用中的步骤。
|
1月前
|
数据采集 测试技术 API
python爬虫之app爬取-微信朋友圈
搭建appium环境,appium基本使用,API操作等等
71 0
|
11天前
|
数据采集 存储 前端开发
Python爬虫如何快速入门
写了几篇网络爬虫的博文后,有网友留言问Python爬虫如何入门?今天就来了解一下什么是爬虫,如何快速的上手Python爬虫。
17 0
|
23天前
|
数据采集 存储 Rust
Rust高级爬虫:如何利用Rust抓取精美图片
Rust高级爬虫:如何利用Rust抓取精美图片
|
24天前
|
数据采集 存储 Web App开发
一键实现数据采集和存储:Python爬虫、Pandas和Excel的应用技巧
一键实现数据采集和存储:Python爬虫、Pandas和Excel的应用技巧

热门文章

最新文章