• 大小: 6KB
    文件类型: .py
    金币: 1
    下载: 0 次
    发布日期: 2021-05-12
  • 语言: Python
  • 标签: 微博  关键字  爬虫  

资源简介

根据关键字,起始时间,和天数自动抓取时间段内的微博,包括微博id ,用户id ,时间,vip,微博内容,转发信息,转发信息转发数和评论数,并写入excel表格。

资源截图

代码片段和文件信息

from urllib import request
from urllib import parse
from urllib.request import urlopen
from http import cookiejar
from lxml import etree
from bs4 import  BeautifulSoup
import  re
import datetime
#from myfunction import ntoc
#from myfunction import dict_freq_sort
import xlwt
wbk = xlwt.Workbook()
sheet = wbk.add_sheet(‘sheet 1‘)

keyword=‘食品安全‘
y=2019
m=3
d=1
days=10

def getday(ymdn):
    the_date = datetime.datetime(ymd)
    result_date = the_date + datetime.timedelta(days=n)
    d = result_date.strftime(‘%Y-%m-%d‘)
    return d

url_keyword=parse.quote(keyword)

#提交准备
user_agent = ‘Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17763‘
headers = { ‘User-Agent‘ : user_agent ‘Referer‘:‘‘ }
#cookie构建opener
cookie=cookiejar.CookieJar()#cookie = cookiejar.MozillaCookieJar(filename) 可保存读取的cookie初始化方法
#cookie.load(filename ignore_discard=True ignore_expires=True)读取已保存cookie
handler = request.HTTPCookieProcessor(cookie)
opener = request.build_opener(handler)


#pattern_newline= re.compile(r‘,|?|。|!|……|:|;‘)#每一句进行换行
#pattern_del_blank=re.compile(r‘ ||的秒拍视频|“|”|、|网页链接|《|》|收起全文d|@|【|】|“|“‘)#删空格去和微博符号
#pattern_del=re.compile(r‘#.*#‘)#删掉微博中的主题名
pattern_chinese =re.compile(u“[\u4e00-\u9fa5]+“)
end_str=‘抱歉,未找到“‘+keyword+‘”相关结果。‘
pattern_endweibo=re.compile(end_str)
pattern1=re.compile(‘展开全文c‘)
pattern_del_sentence=re.compile(‘的微博视频‘)
pattern_save=re.compile(r‘【.*?】|《.*?》‘)
patterb_firstsen=re.compile(r‘[\u4e00-\u9fa5](.*?)。|[\u4e00-\u9fa5](.*?)?|[\u4e00-\u9fa5](.*?)!‘)
pattern_time=re.compile(r‘..:..‘)

sum=0
for i in range(days):
    data=getday(ymd-i)
    print(data)
    for j in range(24):
        if j==23:
            data_add_hour = data + ‘-‘ + str(j) + ‘:‘ +getday(ymd-(i-1)) + ‘-‘ + str(0)
        else:
            data_add_hour = data + ‘-‘ + str(j) + ‘:‘ + data + ‘-‘ + str(j + 1)
        print(data_add_hour+‘:‘)
        for k in range(50):
            url = ‘https://s.weibo.com/weibo?q=‘+url_keyword+‘&typeall=1&suball=1×cope=custom:‘+data_add_hour+‘&Refer=g&page=‘+str(k+1)
            requ = request.Request(url=urlheaders=headers)  # data#headers
            try:
                respones = opener.open(requtimeout=60)  # timeout=10 使用自己建的opener处理requests
                # cookie.save(ignore_discard=True ignore_expires=True)  保存cookie
                web_data = respones.read().decode(“utf-8“ “ignore“)
                if pattern_endweibo.findall(web_data)!=[]:
                    #print(‘该时段没有更多结果‘)
                    break
                page = etree.HTML(web_data)
                weibo_list = page.xpath(“//div[@mid]“)
                for p in weibo_list:
                    rowNum = sum
                    #print(‘=============‘)
                    mid =

评论

共有 条评论