13-爬取百度贴吧中的图片(python+xpath)
通过xpath分析页面,爬取页面中的图片:
#_*_ coding: utf-8 _*_ '''
Created on 2018年7月15日
@author: sss
function: 使用xpath还处理爬取的数据 '''
from lxml import etree
import urllib
from pip._vendor.distlib.compat import raw_input
from asyncio.tasks import sleep class Spider:
def __init__(self):
self.tiebaName = raw_input('请输入需要爬去的贴吧的名字')
self.beginPage = int(raw_input('其输入起始页'))
self.endPage = int(raw_input('请输入终止页')) self.url = 'http://tieba.baidu.com/f'
self.ua_header = {'User-Agent': 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;'} #图片编号
self.userName = 1 #计算爬取页
def tiebaSpider(self):
for page in range(self.beginPage, self.endPage + 1):
pn = (page - 1) * 50 #url中的page number
word = {'pn': pn, 'kw': self.tiebaName} word = urllib.parse.urlencode(word ) #转化为url编码格式
myUrl = self.url + '?' + word #调用页面处理函数load_Page
#并获取页面的所有帖子链接
links = self.loadPage(myUrl) #开始抓取每个首页所有楼主发帖的标贴连接
def loadPage(self, url ):
req = urllib.request.Request(url, headers=self.ua_header)
html = urllib.request.urlopen(req).read() #解析html为html文档
selector = etree.HTML(html) #抓取当前页面的所有帖子的url的后部分,也就是帖子的编号
# http://tieba.baidu.com/p/4884069807里的 “p/4884069807”
links = selector.xpath('//div[@class="threadlist_lz clearfix"]/div/a/@href') #links类型为etreeElementString列表
#遍历列表,并且合并成一个帖子地址,调用图片处理函数LoadImage
for link in links:
link = 'http://tieba.baidu.com' + link
self.loadImages(link ) #抓取每个首页中对应的每个楼主的发布详细页面
def loadImages(self, link ):
req = urllib.request.Request(link, headers= self.ua_header)
html = urllib.request.urlopen(req).read() selector = etree.HTML(html) #获取这个帖子里的所有图片的src路径
imagesLinks = selector.xpath('//img[@class="BDE_Image"]/@src') #获取图片路径,下载保存
for imagesLink in imagesLinks:
self.writeImages(imagesLink) print('完成所有下载!') #保存页面中的图片
def writeImages(self, imagesLink):
"""
将Images里的二进制内容存入到userNname文件中
"""
print(imagesLink) #通过图片连接获取图片内容:
images = urllib.request.urlopen(imagesLink).read() print('正在存储文件%d...' % self.userName) #写入文件:
with open('./images/' + str(self.userName) + '.png', 'wb') as f: #存入也该项目同级的images文件夹中
f.write(images) #计数器加一
self.userName += 1 if __name__ == '__main__':
mySpider = Spider()
mySpider.tiebaSpider()
13-爬取百度贴吧中的图片(python+xpath)的更多相关文章
- Python 爬虫练习: 爬取百度贴吧中的图片
背景:最近开始看一些Python爬虫相关的知识,就在网上找了一些简单已与练习的一些爬虫脚本 实现功能:1,读取用户想要爬取的贴吧 2,读取用户先要爬取某个贴吧的页数范围 3,爬取每个贴吧中用户输入的页 ...
- 使用python爬取百度贴吧内的图片
1. 首先通过urllib获取网页的源码 # 定义一个getHtml()函数 def getHtml(url): try: page = urllib.urlopen(url) # urllib.ur ...
- Python学习 —— 爬虫入门 - 爬取Pixiv每日排行中的图片
更新于 2019-01-30 16:30:55 我另外写了一个面向 pixiv 的库:pixiver 支持通过作品 ID 获取相关信息.下载等,支持通过日期浏览各种排行榜(包括R-18),支持通过 p ...
- python 爬取百度翻译进行中英互译
感谢RoyFans 他的博客地址http://www.cnblogs.com/royfans/p/7417914.html import requests def py(): url = 'http: ...
- 写一个python 爬虫爬取百度电影并存入mysql中
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
- Python爬虫实例(一)爬取百度贴吧帖子中的图片
程序功能说明:爬取百度贴吧帖子中的图片,用户输入贴吧名称和要爬取的起始和终止页数即可进行爬取. 思路分析: 一.指定贴吧url的获取 例如我们进入秦时明月吧,提取并分析其有效url如下 http:// ...
- Python爬虫实战二之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不 ...
- Python爬虫实战之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...
- 百度图片爬虫-python版-如何爬取百度图片?
上一篇我写了如何爬取百度网盘的爬虫,在这里还是重温一下,把链接附上: http://www.cnblogs.com/huangxie/p/5473273.html 这一篇我想写写如何爬取百度图片的爬虫 ...
随机推荐
- CMCC有限的访问权限如何解决
最近两天一直出现这个问题,连接CMCC-EDU的时候就是连接不上,提示有限的访问权限,什么诊断和修复IP自动获取都不管用,就是连接不上.怎么说本人也是一个电脑迷,越到这样不靠谱的问题确实不知道如何解决 ...
- W3Schools SQL Quiz
W3Schools SQL Quiz SQL QUIZ Points: 25 out of 25 1. What does SQL stand for? You answered: Structure ...
- SPOJ1812 Longest Common Substring II
题意 A string is finite sequence of characters over a non-empty finite set Σ. In this problem, Σ is th ...
- LG3391 【模板】文艺平衡树(Splay)
题意 您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1 \(n,m ...
- webpack新版本4.12应用九(配置文件之使用不同语言进行配置)
使用不同语言进行配置(configuration languages) 查看原文|编辑此页 webpack 接受以多种编程和数据语言编写的配置文件.支持的文件扩展名列表,可以在 node-interp ...
- 16.Selenium+Python关于句柄的小Demo
前言:有些链接点击之后,会重新打开一个窗口,对于这种情况,就要切换窗口了,获得窗口的唯一标识是用句柄(handle) 代码如下所示: from selenium import webdriver dr ...
- spring mvc集成velocity使用
目前流行的三大页面视图神器是:老牌大哥jsp.后起之秀freemarker和velocity.这里不详细比较这三者的优劣,总体来说,jsp是标配,但后面两个更严格的执行了视图与业务的分离,页面里是不允 ...
- 【openCV学习笔记】在Mac上配置openCV步骤详解
(1)安装Homebrew:(需要Ruby) 注:因为snow leopard 以后已经自带Ruby了,所有可以不用自己安装Ruby. 看一下Homebrew的官网: http://mxcl.gith ...
- 常用hash算法及评测[转]
RS hash 算法 unsigned int RSHash(char* str, unsigned int len) { unsigned int b = 378551; un ...
- entering power save mode无法开机解决办法
标签(空格分隔): 服务器 问题描述: 服务器型号为IBM system x 3755 m3.服务器在搬动之前运行良好,换完位置之后出现按完电源键后无法进入系统,通过显示器看到entering pow ...