第八天

爬虫

import requests
import re

需要使用的库

requests =requests.get('https://ishuo.cn/') # 文本
data = requests.text
res = re.findall('<li class="list_li">(.*?)</li>',data)

res_list = {}
for i in res:
 content = re.findall('<div class="content">(.*?)</div>',i)[0]
 title = re.findall('<a href="/subject/.*?">(.*?)</a>',i)[0]
 desc = re.findall('</a>(04月.*?)</div>',i)[0]
 res_list[title]=(content,desc)


for  i in res_list.items():
    print(f'{i[0]:<30} | {i[1]}'+'\n')

使用requests.get(‘url’)获取网址

requests.text

re.findall('') 检索所需信息 将所需的用括号包起来 获取的数据为list 列表类型的数据

response = requests.get('http://www.nipic.com/design/acg/renwu/index.html?page=1') # 图片
data = response.text
res =re.findall('data-src="(.*?)" ',data)


for i in res:
   res_list = requests.get(i)
   res_content = res_list.content
   img_name = i.split('/')[-1]
   f = open(img_name, 'wb')
   f.write(res_content)

同等道理用re.findall()获取所需信息 得到你要的图片网址

使用requests.get() 重获信息 使用. content获取图片网址的二进制

open 打开文件

爬虫关键为找到你要的信息 在获取的源码中找到他 然后显示就行

import requests
import re
import jieba
import wordcloud
from imageio import imread
# 爬取数据
requests =requests.get('http://www.haha56.net/xiaohua/gushi/?tdsourcetag=s_pcqq_aiomsg')
requests.encoding='gb2312'  # 其数据编码格式为gb2312 应更改其编码格式不然会产生乱码
data = requests.text       # 获取的数据为文本
res = re.findall('<dd class="preview">(.*?)</dd>',data)

#  词云
bb=""
for i in res:
    bb=bb+str(i)+" "      # 词云要对字符串进行处理,所以应将数据先转换成字符串类型

mask = imread(r"C:\Users\XM\PycharmProjects\untitled\112.jpg")
w = wordcloud.WordCloud( width=1000,\
font_path=r"C:\Windows\Fonts\simhei",height=700,mask=mask,background_color='white')
data_jieba = jieba.lcut(bb)  # 切片
w.generate(" ".join(data_jieba))
w.to_file("pywcloud.png")

#  词频                    # 对数据进行处理排除不需要的数据
count_dict ={}
for i in data_jieba:
    if len(i)==1:
        continue
    if i=='...' :
        continue
    if i not in count_dict:
        count_dict[i]=1
    else:
        count_dict[i]+= 1

ls = list(count_dict.items())    # 列表的键值对
def func(i):
    return i[1]

ls.sort(key=func) 
ls.reverse()                     # 将数据从大到下排序
for i in ls[:10]:
    print(f'{i[0]:^7}{i[1]:^5}')  # 规格化输出
posted @ 2019-07-22 22:51  xm_lucky  阅读(85)  评论(0编辑  收藏  举报