经过差不多一个星期的折腾,当然这其中也有做很多其他事情。周四写出来直接通过浏览器Network找到观察者网评论链接进行的爬虫,今天下午有折腾了差不多一下午,终于通过BeautifulSoup解析出的html中找到了data-id,也就是构造评论链接的关键。

找到了data-id之后,这样就可以把每篇文章和其评论建立联系。这样接下来的通过文章链接,直接爬评论的想法就可以水到渠成了。

而下午的主要时间都花费在怎么data-id解析提取出来。尝试了很多方法,比如先找到 class = gc-comment 的div 标签,这时候得到是list类型,然后将list类型转变为string类型,可是这期间总是出错,解决这个问题的关键在于 确定 变量的数据类型,不同的数据类型处理方法不同!



gc_comment = soup.select('div.gc-comment')

#[<div class="gc-comment" data-from="cms" data-id="355103" data-type="1" id="comments-container">]

最后发现把得到的gc_comment是list类型,并且令str = gc_comment[0]后,str并不是我认为的string类型,通过print(type(str))得知str是<class 'bs4.element.Tag'>,也就是说str是bs4类型,想要得到data-id中的数据,必须采用bs4提取数据的方法!因此用str.attrs['data-id'],得到data-id的值。



到这里,接下来的程序就很好写了,没过多久,一个带有三个函数的程序就被我编写出来了。这还是自己第一次亲自编出python爬虫,虽然功能很简单,但这也是对我近期python学习的一个总结和肯定。这次花费很多时间在提取data-id上,说明对python最简单的基础知识还没有掌握,接下来要着重掌握。

最后贴出观察者网热评python源代码:

#!/user/bin/env python
# -*- coding:utf-8 -*-
# author :Guoz time:2018/3/11import requests
from bs4 import BeautifulSoup
import json
import re
import urllib
from urllib import requestdef get_TitleandDataid(url):try:# kv = {'wd':keyword}r = requests.get(url)#print(r.request.url)r.raise_for_status()r.encoding = r.apparent_encoding#print(r.status_code)# print(r.text)#print(len(r.text))demo = r.textsoup = BeautifulSoup(demo, "html.parser")articleTitle = soup.title.textgc_comment = soup.select('div.gc-comment')  # 用soup.select找到data-id所在的div#print(articleTitle.text)str = gc_comment[0]#print(str.attrs['data-id'])  # 在对数据进行提取时 关键是找到明确数据的类型,不同的类型,操作方式不同data_id = str.attrs['data-id']print(articleTitle)except:print("标题和Data-id爬取失败!")return data_idreturn articleTitledef get_cmtsUrl(data_id):cmtsUrl = ('http://user.guancha.cn/comment/cmt-list.json?codeId='+data_id+'&codeType=1&pageNo=1&order=1&ff=www')return cmtsUrldef get_hotcmts(cmtsUrl):try:with request.urlopen(cmtsUrl, timeout=10) as response:content = response.read()except Exception as e:content = Noneprint('crawl data exception.' + str(e))allContent = json.loads(content)['hots']i = 0for item in allContent:i = i + 1print('热评NO.%s:\n' % (i))print(item['content'] + '\n')print('反对:%s  支持:%s' % (item['tread_num'], item['praise_num']))print('------' * 30 + '\n')def main(url):data_id = get_TitleandDataid(url)#print(data_id)cmtsUrl = get_cmtsUrl(data_id)#print(cmtsUrl)hotcmts = get_hotcmts(cmtsUrl)print(hotcmts)url = ("http://www.guancha.cn/kegongliliang/2018_03_05_448905.shtml")
main(url)

记第一次写出自己的简单python爬虫:GCZW3相关推荐

  1. python写出表白_简单python 表白代码

    # 导入模块 import turtle # 人 turtle.penup() turtle.goto(-100, 100) turtle.pendown() turtle.color('yellow ...

  2. python写出的程序如何给别人使用-涨姿势!这些小技巧让小白也可以写出更优雅的Python代码!...

    原标题:涨姿势!这些小技巧让小白也可以写出更优雅的Python代码! 一.前言 我前两天回答了两个Python相关的问题,收到了很多赞,从答案被收藏的情况来看,确实对不少人都很有帮助,所以我也很开心. ...

  3. 教你写出可读性高的Python代码

    如果有人问起 Python 程序员他们最喜欢 Python 哪一点,他们一定会提到 Python 的高可读性.确实,对于 Python 来说,其高可读性一直是这门语言设计的核心.一个不争的事实是,相对 ...

  4. 简单python爬虫爬取游戏wiki立绘

    简单python爬虫爬取游戏wiki立绘 玩二次元手游是感叹美少女立绘真好看啊,可惜就是抽不到,于是看到b站wiki上有角色立绘,就写了个爬虫准备将立绘趴下来欣赏(舔). 本人爬虫的技术只算是初学,代 ...

  5. sublime text3安装python插件和flake8_让你用sublime写出最完美的python代码--windows环境-搜云库...

    至少很长一段时间内,我个人用的一直是pycharm,也感觉挺好用的,也没啥大毛病 但是pycharm确实有点笨重,啥功能都有,但是有很多可能这辈子我也不会用到,并且pycharm打开的速度确实不敢恭维 ...

  6. 让你用sublime写出最完美的python代码--windows环境

    至少很长一段时间内,我个人用的一直是pycharm,也感觉挺好用的,也没啥大毛病 但是pycharm确实有点笨重,啥功能都有,但是有很多可能这辈子我也不会用到,并且pycharm打开的速度确实不敢恭维 ...

  7. 如何用 GitHub Actions 写出高质量的 Python代码?

    这篇博文将与你分享如何在Python项目中搭建起GitHub Actions工作流,以确保你写出的代码既优雅,又符合所有最佳实践,且已经过完备测试. 作者 | Wojciech Krzywiec 译者 ...

  8. 记第一次训练出深度学习模型并成功预测结果

    先放一下最终结果,参加的竞赛是Kaggle的Classify Leaves,是李沐大神举办的一个比赛,虽然已经过期了,但是还是可以来熟悉一下基本操作,总共有176个种类,随机预测概率大概为0.0056 ...

  9. 中软python编码规范考试试题_卓越分享 | 如何写出一手漂亮的Python代码?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Python语言这么火,有很多同学是从其他语言转行过来的(比如c++,java语言),多多少少写代码的时候也会受其他语言的影响!而对于刚开始学编程的小白同 ...

最新文章

  1. html基础实验的实验原理,html网页设计实验报告.doc
  2. Debug经验总结:优化、程序员和概率
  3. @RequestMapping和@GetMapping @PostMapping 区别
  4. SQL Server数据库学习笔记-三大范式
  5. html文字阴影php,HTML_html5文字阴影效果text-shadow使用示例,复制代码代码如下: !DOCTYPE h - phpStudy...
  6. Mysql安装相关问题
  7. 小Z的袜子(bzoj 2038)
  8. 使用组策略配置QoS
  9. grib1文件解析 python_python安装读取grib库总结(推荐)
  10. android studio x5,android studio中使用x5 webview来读写cookies的问题
  11. Android 原生插件开发步骤
  12. 小福利,通过python利用百度ai实现图片识别
  13. java CGLIB动态代理
  14. Java游戏培训机构哪家专业
  15. 【SpringCloud】Could not find artifact org.springframework.cloud:spring-cloud-starter-xxx
  16. 空间统计(三)聚类分布制图
  17. SVN主干到分支的详细操作!
  18. IDEA的debug调试功能
  19. 信息奥赛一本通1225:金银岛
  20. 珊珊来迟的解决方法——VB中防止多用户登录

热门文章

  1. smarty新闻管理系统
  2. 转载--苹果是怎么吃到的?——职业规划,从了解自己开始
  3. php 运行命令行,命令行运行php报错
  4. Oracle 合计统计sql语句
  5. 求助!PIP安装出问题
  6. 量化投资中常遇到的两个问题
  7. UESTC 2014 Summer Training #7 Div.2
  8. 【Effective C++】item20: Prefer pass-by-reference-to-const to pass-by-value
  9. matlab里open命令,告诉你Ununtu下在Matlab中读写OpenEXR格式的图片的方法及命令
  10. 计算机主机面板上的reset,一但中了IE窗口炸弹马上按下主机面板上的Reset键,重起计算机是对的吗...