获取微博热搜爬虫(项目)

平台:

Crawlab(可以没有)

说明:

爬取当前微博热搜,存入TXT。补充说明,整理所有热搜,存入另一个TXT。

所用库:

Selector,requests,BeautifulSoup

任务分解:

1.爬取页面

2.准确找到目标位置

3.存入TXT

代码:

# -*- encoding: utf-8 -*-
# ---------------------------------------------
# 微博热搜
# ---------------------------------------------
import time
import re
import json
import sys
import copy
from collections import OrderedDict
from parsel import Selector
import requests#引入requests库用于下载网页
from bs4 import BeautifulSoup#BeautifulSoup用于解析网页

url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"#所要爬取的网页
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}#
r=requests.get(url)#请求网站
r.encoding='utf-8'#对页面内容重新编码
data=r.text
soup=BeautifulSoup(data,'html.parser')#使用BeautifulSoup工具
#print(soup.prettify())#显示网站结构
a=[]#创建一个空列表
index=[]
for i in soup.find_all(class_="td-01 ranktop"): #把排名添加进空列表
    a.append(i.get_text().strip())
for k in soup.find_all('a',attrs={'href':re.compile('^/weibo?'),'target' : '_blank'}): #把热度标题添加进空列表
    index.append(k.get_text().strip())
nvs = zip(a,index)
data = dict( (a,index) for a,index in nvs)
f = open('test.txt','a')
localtime = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())#获取时间
timee="爬取时间为:"+localtime
f.write(timee+'\n')
for i in data:
    f.write(str(i))
    f.write('\t')
    f.write(str(data[i]))
    f.write('\n')
f.close()

缺陷:

BeautifulSoup不快(不明显);代码有点麻烦。

补充代码:

# -*- encoding: utf-8 -*-
# ---------------------------------------------
# 微博热搜查重版
# ---------------------------------------------
import time
import re
import json
import sys
import copy
from collections import OrderedDict
from parsel import Selector
import requests#引入requests库用于下载网页
from bs4 import BeautifulSoup#BeautifulSoup用于解析网页

url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"#所要爬取的网页
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}#
r=requests.get(url)#请求网站
r.encoding='utf-8'#对页面内容重新编码
data=r.text
soup=BeautifulSoup(data,'html.parser')#使用BeautifulSoup工具
#print(soup.prettify())#显示网站结构
a=[]#创建一个空列表
index=[]
for k in soup.find_all('a',attrs={'href':re.compile('^/weibo?'),'target' : '_blank'}): #把热度标题添加进空列表
    index.append(k.get_text().strip()+'\n')
with open('olddata.txt', 'r', encoding='utf-8') as f:
    all_list= f.readlines()#将文件读进
f.close()
all_list = list(set(all_list+index))
for i in all_list:
    print(i.strip())
with open('olddata.txt', 'w', encoding='utf-8') as f:
    for i in all_list:
        f.write(i)
f.close()

总结:

代码能力确实一般,凑出来这两个代码,语句繁琐,功能简单,不堪大用,实属无奈。先跑着这吧,有空再改改。此外,我的crrawlab不能用了,愿意帮忙的朋友可以联系我呀!QQ:2113638048

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值