抓取网页图片和文字信息并下载


本次任务为:

把搜下来的网页进行聚类,将聚类结果显示给用户。用户可以选择其中一个类,标位关注,类的关键词作为主体,用户就可以跟踪这个主题,了解主题。

deadline:11.09

任务解析:

基本任务:将网页进行聚类,分别根据其类别进行存档,图片放到相应的文件夹,文本放到相应的文件中。

提升任务:对网页进行持续跟踪,将符合条件的文件,持续下载。

编译环境综述:

  • 操作系统:win 10 专业版
  • 编译环境: Python 3.6
  • 编辑环境:Spyder

如果想省事,可以从睿思直接下载Anaconda Navigator,安装后,可以直接用,封装好的。

话不多说,先贴代码:

#################################################
# 网页爬虫
# Email  : jtailong@163.com
#################################################
import re
import time
import urllib.request
import requests
from bs4 import BeautifulSoup
#添加网页
url = 'https://www.douban.com/'
#将图片抓取,并打包
req = urllib.request.urlopen(url)

data = req.read().decode('utf-8')

match = re.compile("data-origin=\"(.+?\.jpg)")
#j记录图片信息
f = open('D:\\P\图片下载记录.txt', 'w+')

for sj in match.findall(data):
    try:
        f.write(sj)
    except:
        print("fail")
    f.write('\n')

f.close()

f1 = open('D:\\P\Pic_information.txt', 'r+')
#开始抓取网页图片
x = 0
for lj in f1.readlines():
    img = urllib.request.urlretrieve(lj, 'D:/P/%s.jpg' % x)
    x += 1

f1.close()
#将网页上所有的文字信息,记录到TXT文件当中
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
content = soup.text
print (content)
file = open('D:\\P\网页上所有文字信息.txt', 'w', encoding='utf-8')
file.write(content)
file.close()

 

编译效果对比:

上图为:原网页;下图为:经过抓取,可以在文件夹中看到信息。

更新:

通过这次编程,我对爬虫的理解就是:

  1. 通过网络传输协议(http),将服务器上的文本,文字等下载到本地
  2. 爬虫解析(正则表达式)
  3. 将类别重新分配到你的文件夹(图片保存,文本保存到TXT)当中的一个过程

如果想要系统的学习,或者更好的理解代码,请参考

http://cuiqingcai.com/1052.html

献丑了。

方法二:

通过跟同学交流,发下,第一个代码的鲁棒性差一些,再次运行会出现错误。这里,给出第二种编译方式

import urllib.request,socket,re,sys,os
import re

import time
import urllib.request
import requests
from bs4 import BeautifulSoup
#定义文件保存路径
targetPath = "D:\\P"
 
def saveFile(path):
    #检测当前路径的有效性
    if not os.path.isdir(targetPath):
        os.mkdir(targetPath)
 
    #设置每个图片的路径
    pos = path.rindex('/')
    t = os.path.join(targetPath,path[pos+1:])
    return t
 
#用if __name__ == '__main__'来判断是否是在直接运行该.py文件
 
 
# 网址,向网站请求数据,并返回到本地,将这些数据读取到data中
url = "https://www.douban.com/"

headers = {
              'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '                            'Chrome/51.0.2704.63 Safari/537.36'
           }
#上面这行,是用来伪装成浏览器,防止被网站diss 
req = urllib.request.Request(url=url, headers=headers)
 
res = urllib.request.urlopen(req)
 
data = res.read()
#对读取到本地的数据进行解析,通过后缀,匹配相应的图片 并保存
for link,t in set(re.findall(r'(https:[^s]*?(jpg|png|gif))', str(data))):
 
    print(link)
    try:
        urllib.request.urlretrieve(link,saveFile(link))
    except:
        print('失败')
#将网站的文本信息解析,并保存到相应的TXT文本当中
r = requests.get(url)
soup = BeautifulSoup(r.text, 'html.parser')
content = soup.text
print (content)
file = open('D:\\P\网页上所有文字信息.txt', 'w', encoding='utf-8')
file.write(content)
file.close()

这次效果为:

其中txt文件的效果为:

 

 

欢迎大家讨论。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM