python爬取微博数据

使用python爬取微博数据,使用的代理是蜻蜓代理的隧道代理,包天17元。使用的是request库。有些网页因为网络等原因打不开,总共获取到了76000+数据,没有爬取评论。评论部分的代码调试没有问题,在实际爬取的时候总是报错,可以确定的是代码没问题,可能是网页的问题,可以加一个异常处理,不想写了,评论爬下来也没有很大价值。
这次爬取给我最大的感受就是不可能爬到所有信息,之前没加异常处理总是爬到一半中断了,加了异常处理之后舍弃了那些打不开的网址,整个数据爬取就顺利得多了。

# -*- coding: utf-8 -*-
"""
Created on Thu Apr  2 02:33:00 2020

@author: .....
"""
"""
每一条微博的div个数不同,还是要遍历各个div,至少有两个div
所有url的搜索关键词都是“肺炎”
"""

from lxml import etree
#import requests
import re
from datetime import datetime,timedelta
#import pandas as pd
from openpyxl import Workbook
from urllib import request
import time,random

#获取要爬取的日期列表
def gen_dates(b_date, days):
    day = timedelta(days=1)
    for i in range(days):
        yield b_date + day*i
def get_date_list():
    """
    获取日期列表
    :param start: 开始日期
    :param end: 结束日期
    :return:
    """
    start = datetime.strptime("xxxx-xx-xx", "%Y-%m-%d").date()
    end = datetime.strptime("xxxx-xx-xx", "%Y-%m-%d").date()
    #.date()可以只截取日期
    datelist = []
    for d in gen_dates(start, (end-start).days):
        d = str(d).replace('-','')
        datelist.append(d)
    return datelist

#这个函数来得到指定首尾的中间字符串
def GetMiddleStr(content,startStr,endStr):
    patternStr = r'%s(.+?)%s'%(startStr,endStr)
    p = re.compile(patternStr,re.IGNORECASE)
    m= re.search(p,content)
    if m:
        return m.group(1)

#这个函数来从博文中得到点赞转发评论量以及时间
def count(strtext):
    matchresult = []
    matchresult.append(int(GetMiddleStr(strtext,'赞\[',']\xa0')))#点赞量
    matchresult.append(int(GetMiddleStr(strtext,'转发\[',']\xa0')))#转发量
    matchresult.append(int(GetMiddleStr(strtext,'评论\[',']\xa0')))#评论量
    #时间的正则匹配有点复杂,先搁着
#    matchresult.append(GetMiddleStr(strtext,'收藏\xa0',''))#时间
    return matchresult   

#写进文件时的index
columns1 = ['id','博主','博文','原微博博主','原博文','原博文点赞量','原博文转发量','原博文评论量','转发理由','点赞量','转发量','评论量','发布时间','爬取时间']
#columns2 = ['微博id','评论id','评论内容','评论点赞量']
#工作本
workbook = Workbook()
#微博内容存储的sheet
sheet = workbook.active
sheet.title = "微博内容"
sheet.append(columns1)

#便于知道程序运行到了哪里
cishu = 1

# 代理服务器
proxyHost = "dyn.horocn.com"
proxyPort = "50000"

# 代理隧道验证信息
proxyUser = "....."
proxyPass = "....."

proxyMeta = "http://%(user)s:%(pass)s@%(host)s:%(port)s" % {
   
    "host": proxyHost,
    "port"
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值