网页爬虫抓取百度图片(爬取百度贴模块详细解析(一)_社会万象_光明网 )

优采云 发布时间: 2022-02-05 23:19

  网页爬虫抓取百度图片(爬取百度贴模块详细解析(一)_社会万象_光明网

)

  目录概览

  爬取*敏*感*词*每篇博文的所有图片。

  准备所需模块,涉及知识点,运行效果

  控制台打印:

  

  计算机本地文件:

  

  完成爬虫1.分析网页

  打开*敏*感*词*搜索关键字,这里的例子是python,也可以是其他关键字

  分析前三个页面的url,得到:

  # 第1页:http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=0

# 第2页:http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=50

# 第3页:http://tieba.baidu.com/f?kw=python&ie=utf-8&pn=100

# 比较三者三者可以得出每一页的网址公式:

# "http://tieba.baidu.com/f?kw="+tieba_name+"&ie=utf-8&pn="+(page_index-1)*50

# 其中tieba_name是你要搜索的贴吧名字,page_index是你要搜索的第几页

  得到每个页面的URL后,下一步就是分析每个帖子在特定页面上的链接:

  

  已经可以通过页面的 URL 请求源代码。在源码中,可以通过xpath表达式提取出一串数字,然后组装出具体帖子页面的URL。

  点击帖子进入具体页面,索取源码然后提取图片链接:

  

  这样想:

  首先根据贴吧的名字获取贴吧的URL,然后组装各个页面的URL,然后根据各个页面的URL请求页面的HTML源代码,然后在源码中提取每个帖子的URL超链接信息,然后组装帖子每个具体页面的URL,然后请求帖子具体页面的HMTL源代码,提取图片的超链接,然后根据图片的超链接下载图片。

  2.爬虫代码

  import urllib.parse

import urllib.request

from lxml import etree

# 爬虫实践:爬取*敏*感*词*的图片

class Spider():

def __init__(self):

self.tiebaName = "java"

self.pageNumber = 3

self.url = "http://tieba.baidu.com/f?"

self.fileName = 1

def tiebaSpider(self):

"""构造URL"""

for page_index in range(1, self.pageNumber + 1):

pn = (page_index - 1) * 50

wo = {"pn": pn, "kw": self.tiebaName}

word = urllib.parse.urlencode(wo)

tieba_url = self.url + word

self.loadPage(tieba_url)

def loadPage(self, url):

"""爬取页面内容"""

req = urllib.request.Request(url)

data = urllib.request.urlopen(req).read()

html = etree.HTML(data)

links = html.xpath("//div[@class='threadlist_lz clearfix']/div/a/@href")

for link in links:

link = "http://tieba.baidu.com" + link

self.loadImages(link)

def loadImages(self, link):

"""爬取帖子详情页,获得图片的链接"""

req = urllib.request.Request(link)

data = urllib.request.urlopen(req).read()

html = etree.HTML(data)

links = html.xpath("//img[@class='BDE_Image']/@src")

for image_link in links:

self.writeImages(image_link)

def writeImages(self, imageslink):

"""通过图片的链接,爬取图片并保存在本地"""

print("正在存储图片:", self.fileName, "......")

image = urllib.request.urlopen(imageslink).read()

file = open(r"C:\\Users\\Administrator\\Pictures\\img\\" + str(self.fileName) + ".jpg", "wb")

file.write(image)

file.close()

self.fileName += 1

if __name__ == '__main__':

# 实例化Spider类

mySpider = Spider()

# 调用方法

mySpider.tiebaSpider()

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线