#-*- coding = utf-8 -*-

#@Time : 2020/7/23 15:09

#@Author :

#@File : douban_group.py

#@software : PyCharm

#爬取豆瓣组数

#待解决的问题:标签下小组不全!!

import csv

import importlib

import urllib.request

import urllib.error

import re

from random import sample

from urllib.parse import quote

import string

import regex

from bs4 import BeautifulSoup

import sqlite3

import xlwt

import pandas as pd

#确定一个主函数

def main():

baseurl = "https://www.douban.com/"

datalist = getDATA(baseurl)

#print(datalist)

pd.DataFrame(datalist).to_csv("豆瓣小组.csv")

#savepath = "豆瓣组员数超过一万的小组.xls"

#saveDATA(datalist)

findtag = regex.compile(r'

(.*)')

findlink = regex.compile('

')

def getDATA(url):

#得到豆瓣首页

global pagenum

datalist = []

html = askURL(url)

# 对得到的首页进行信息筛选

soup = BeautifulSoup(html, "html.parser")

for cate in soup.find_all('div', class_="cate group-cate"):#筛选到tag和link

cate = str(cate)

#link = regex.findall(findlink, cate, overlapped=True)

link = "https://www.douban.com/group/explore?"

tag = regex.findall(findtag, cate, overlapped=True)

#print(tag)

findsum = re.compile(r'

(\d*).* 在此聚集

')

findname = re.compile(r'')

findpagenum = re.compile(r'1')

# 首先分别把各tag中的总页数筛出来

for i in range(len(tag)):

url1 = link + "tag=" + quote(str(tag[i]))

html_temp = askURL(url1)

soup_temp = BeautifulSoup(html_temp, "html.parser")

for paginator in soup_temp.find_all('div',class_="paginator"):

paginator = str(paginator)

pagenum = re.findall(findpagenum, paginator)[0]

# 重新进入link,获取soup

for j in range(0, int(pagenum)):

url2 = link + "start=" + str(j*20) + "&tag=" + quote(str(tag[i]))

html_temp1 = askURL(url2)

soup_temp1 = BeautifulSoup(html_temp1, "html.parser")

for result in soup_temp1.find_all('div', class_="result"):

data = {}

result = str(result)

name =re.findall(findname, result)[0]

data['name'] = name

sum = re.findall(findsum, result)[0]

data['sum'] = sum

datalist.append(data)

return datalist

my_headers = [

"Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36",

"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0",

"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_2) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14",

"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)",

'Mozilla/5.0 (Windows; U; Windows NT 5.1; it; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11',

'Opera/9.25 (Windows NT 5.1; U; en)',

'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)',

'Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.5 (like Gecko) (Kubuntu)',

'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.0.12) Gecko/20070731 Ubuntu/dapper-security Firefox/1.5.0.12',

'Lynx/2.8.5rel.1 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/1.2.9',

"Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7",

"Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:10.0) Gecko/20100101 Firefox/10.0 "

]

def askURL(url):

#模拟浏览器头部文件

head = {

"Host": " www.douban.com",

"User-Agent": sample(my_headers, 1)[0]}

req = urllib.request.Request(url=url, headers=head)

html = ""

try:

response = urllib.request.urlopen(req)

html = response.read().decode("utf-8")

except urllib.error.URLError as e:

if hasattr(e, "reason"):

print(e.reason)

return html

#def saveDATA(datalist):

# pf = pd.DataFrame(list(datalist))

# # 指定字段顺序

# order = ['name', 'sum']

# pf = pf[order]

# # 将列名替换为中文

# columns_map = {

# 'name': '豆瓣小组',

# 'sum': '组员数'

# }

# pf.rename(columns=columns_map, inplace=True)

# # 指定生成的Excel表格名称

# file_path = pd.ExcelWriter('doubangroup.xlsx')

# # 替换空单元格

# pf.fillna(' ', inplace=True)

# # 输出

# pf.to_excel(file_path, encoding='utf-8', index=False)

# # 保存表格

# file_path.save()

if __name__ == "__main__":

main()

print("爬取成功")

python爬豆瓣小组,爬虫豆瓣群数量,小组相关推荐

  1. 用 Python 爬取 500 条豆瓣影评,看看《蚁人2》是否有看点?

    作者 | 量化小白H 责编 | 郭芮 "不以大小论英雄."<蚁人2>已热映多天,本文就来看看豆瓣电影上的这部片子评分如何,从代码和数据层面给出最客观的解读. 作为练手, ...

  2. python爬百度翻译-爬虫 python爬取百度翻译接口 超详细附源码

    前言 今天教大家如何利用 firefox 分析百度翻译的接口,并用python爬取接口.大家学会后可以干一些有趣的事情,比如做一个自己的翻译软件. 具体内容 1 - 找到URL接口 进入百度翻译的网址 ...

  3. python爬虫翻页代码 豆瓣_Python爬虫 豆瓣动态页面的爬取

    动态页面和静态页面可通过检查元素查看爬取的信息和查看源代码中的信息是否一致,一致则为静态页面,反则为动态页面.因为检查查看的代码是经过处理后生成的,而查看源代码形式是你实际抓取的页面. 1.爬虫思路 ...

  4. Python爬长津湖豆瓣短评

    刚学习爬虫不久,便想通过爬取最近很火的<长津湖>电影来练练手. 本文主要通过selenium库来进行,以chromedriver作为其与Chrome通信的载体. 1.准备阶段 下载Chro ...

  5. python爬歌词_python爬虫抓取某易云音乐歌词,从此不在下载

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:企鹅号小编 ( 想要学习Python?Python学习 ...

  6. python 爬取_Python爬虫爬取马蜂窝北京景点信息

    背景 来北京有些日子了,但是每个周末都窝在六环外的村里躺着.想想不能再这么浪费时间了,得出去玩!但是去哪玩呢?于是乎想着,先把北京的景点以及位置都保存起来,然后在分析分析做个出行计划.从哪里获取景点信 ...

  7. python爬图片_python爬虫(爬取图片)

    python爬虫爬图片 爬虫爬校花网校花的图片 第一步 载入爬虫模块#载入爬虫模块 import re #载入爬虫模块 import requests #载入爬虫模块 第二步 获得校花网的地址,获得其 ...

  8. python爬图片_Python爬虫:彼岸图网图片爬取-Go语言中文社区

    杂 哈哈,这是我第一篇博客 半年以后回来再看发现这代码简直太难看了 现在已经弃用大小驼峰转蛇形命名了 确实好看 除了命名别的也写的不怎么样 因为爬虫只是个爱好所以也不准备再投入时间重构了 将就着看吧 ...

  9. python爬取discuz_爬虫技术实践(二)Discuz! 按板块爬取帖子内容实战

    Discuz! 是一套由康盛创想开发的通用社区论坛软件系统,成熟度高.覆盖率大.用户可以在不需要任何编程的基础上,通过简单的设置和安装,在互联网上搭建起具备完善功能.很强负载能力和可高度定制的论坛服务 ...

最新文章

  1. Xamarin Essentials教程地理定位Geolocation
  2. seata 如何开启tcc事物_如何能在实战中完成分布式事务?知道这些点很重要
  3. file is not a zip file_【钢新滨河社团活动】超燃手势舞,牛津A班邀你来battle!
  4. 华为鸿蒙全能家居,能兑现多少?华为智慧屏十年不过时,用鸿蒙理念做智能家居...
  5. saltapi java_搭建基于Jenkins salt-api的运维工具
  6. JSF组件库–质量不只是零缺陷
  7. 程序员应如何理解高并发中的协程
  8. Redis Key过期及清除策略
  9. 人工智能芯片与传统芯片的区别
  10. MFC开发IM-第二十八篇、acl 的编译与使用
  11. spark中local模式与cluster模式使用场景_Spark内核及通信框架概述-针对面试(后面有源码分析)...
  12. QueryPerformanceFrequency
  13. Rocksdb参数总结
  14. linux内核空间和用户空间认识和区别
  15. 清洁机器人--屏幕显示LCD方案接口说明概述
  16. 关于一些Excel的快捷键总结
  17. c# datetime._C#| DateTime.TimeOfDay属性(带示例)
  18. 主板电容损坏导致台式机开机风扇转无显示信号输出
  19. Bugzilla使用手册
  20. C语言第十二课:编写扫雷游戏(综合练习2)

热门文章

  1. 你知道1+1=2是如何在cpu中运作的么?----跟我到cpu内部去看看吧!(1)
  2. DevExpress TileControl TileItem圆角
  3. CMOS转换电路是如何实现电平的转换的
  4. Linux下RGB接口LCD显示屏移植杂点抖动问题
  5. 【移动端测试】安卓模拟器简介和adb使用
  6. 今日小程序推荐:查名宝-取好名,创好业!
  7. 源代码防泄密技术分析
  8. 学习笔记02 - Eclipse断点调试(DeBug)使用技巧学习_初级
  9. [舰队收藏]舰娘命名学
  10. 【安卓】1.修改按钮样式之圆角按钮+按钮图标(保姆级图文+附示例+api例程)