刚学python没几天,打算用paython爬去微博热搜数据试验一下,但是发现微博热搜是动态数据,网页源码并不能直接获取想要的数据,network里也并不能找到相关内容,这时重新查看网页源码,发现有类似中文编码的源码,数一下正好50个,不出意外这个就是我们需要的内容,但是这一串字符加了干扰,直接把中间所有的数字25删除后解析成中文发现就是微博热搜的主题

以下是完整代码
#!python3
#encoding=utf-8
import urllib,pymysql,requests,re
#配置数据库
config = {
'host':'127.0.0.1',
'port':3306,
'user':'root',
'password':'123456',
'db':'weibo',
'charset':'utf8',
}
#链接数据库
conn=pymysql.connect(**config)
cursor=conn.cursor()
#获取热搜源码
weiboHotFile=requests.get('http://s.weibo.com/top/summary')
weiboHotHtml=weiboHotFile.text
#正则表达式匹配URL ,找到title
hotKey=re.compile(r'td class=\\"td_05\\"><a href=\\"\\/weibo\\/(.*?)&Refer=top\\"')
hotKeyListBe=hotKey.findall(weiboHotHtml)
rank=1
#遍历获取的title 列表
for title in hotKeyListBe:
#去除干扰数字
title=title.replace('25','')
url='http://s.weibo.com/weibo/'+title
title=urllib.parse.unquote(title)
print(str(rank)+' '+title+' '+url+'\n')
#执行数据语句
sql='insert into hotsearch (rank,daydate,mindate,title,url) values (%s,curdate(),curtime(),%s,%s)'
cursor.execute(sql,(rank,title,url))
rank+=1
conn.commit()
cursor.close()
conn.close()
创建一个bat 文件,运行python脚本