网络爬虫--14.【糗事百科实战】

文章目录

  • 一. 要求
  • 二. 参考代码

一. 要求

爬取糗事百科段子,假设页面的URL是 http://www.qiushibaike.com/8hr/page/1

  1. 使用requests获取页面信息,用XPath / re 做数据提取

  2. 获取每个帖子里的用户头像链接、用户姓名、段子内容、点赞次数和评论次数

  3. 保存到 json 文件内

二. 参考代码

#coding=utf-8
import requests
from retrying import retry
from lxml import etreeclass Qiubai_spider():def __init__(self):self.url = "http://www.qiushibaike.com/8hr/page/{}/"self.headers = {"User-Agent":"Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1 Trident/5.0;"}@retry(stop_max_attempt_number=5) #调用retry,当assert出错时候,重复请求5次def parse_url(self,url):response = requests.get(url,timeout=10,headers=self.headers) #请求urlassert response.status_code==200  #当响应码不是200时候,做断言报错处理print(url)return etree.HTML(response.text) #返回etree之后的htmldef parse_content(self,html):item_temp = html.xpath("//div[@class='article block untagged mb15']")print(len(item_temp))for item in item_temp:#获取用户头像地址avatar = item.xpath("./div[1]/a[1]/img/@src")[0] if len(item.xpath("./div[1]/a[1]/img/@src"))>0 else None#为头像地址添加前缀if avatar is not None and not avatar.startswith("http:"):avatar = "http:"+avatarprint(avatar)name = item.xpath("./div[1]/a[2]/h2/text()")[0] #获取用户名print(name)content = item.xpath("./a[@class='contentHerf']/div/span/text()")[0] #获取内容print(content)star_number = item.xpath("./div[@class='stats']/span[1]/i/text()")[0] #获取点赞数print(star_number)comment_number = item.xpath("./div[@class='stats']/span[2]/a/i/text()")[0] #获取评论数print(comment_number)print("*"*100)def run(self):'''函数的主要逻辑实现'''url = self.url.format(1) #获取到urlhtml = self.parse_url(url) #请求urlself.parse_content(html) #解析页面内容并把内容存入内容队列if __name__ == "__main__":qiubai = Qiubai_spider()qiubai.run()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/452003.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

bzoj 5369: [Pkusc2018]最大前缀和

Description 小C是一个算法竞赛爱好者,有一天小C遇到了一个非常难的问题:求一个序列的最大子段和。 但是小C并不会做这个题,于是小C决定把序列随机打乱,然后取序列的最大前缀和作为答案。 小C是一个非常有自知之明的人&#xff0c…

微软:软件帝王的复兴之路

可以说在过去的两个月IT界所发生的一切都非同寻常,乔布斯辞职了,Google把Motorola并购了,微软炫了一下Windows 8,还宣布开始用ARM了,Google开始和英特尔合作了,AT&T与T-Mobile的并购也在紧密锣鼓进行中…

jdbc和odbc区别

ODBC(Open Database Connectivity,开放数据库互连)是微软公司开放服务结构(WOSA,Windows Open Services Architecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API(应用程序编程接…

事务相关、不可重复读与幻读的区别

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到教程。 事务内嵌套事务: 1) 都用spring事务时,取决spring采用的事务的隔离级别。 这个默认隔离级别是与具体的数据…

onload事件

onload事件它只支持少量标签<body>, <frame>, <iframe>, <img>, <input type"image">, <link>, <script>, <style> 不支持<div>,<p>标签等 所以&#xff0c;在div使用onload事件时该怎么办呢。。。转载…

Eclipse GBK批量转UTF-8插件(转)

最近需要把Android项目转Android Studio&#xff0c;由于之前是eclipse开发&#xff0c;而且坑爹的是编码还是GBK的&#xff0c;转到Android Studio中文都是乱码&#xff0c;如果一个文件一个文件ctrlc的话&#xff0c;想想就累&#xff0c;几经Google&#xff0c;发现一个很好…

网络爬虫--15.【糗事百科实战】多线程实现

文章目录一. Queue&#xff08;队列对象&#xff09;二. 多线程示意图三. 代码示例一. Queue&#xff08;队列对象&#xff09; Queue是python中的标准库&#xff0c;可以直接import Queue引用;队列是线程间最常用的交换数据的形式 python下多线程的思考 对于资源&#xff0…

浅谈:国内软件公司为何无法做大做强?

纵览,国内比较大的软件公司(以下统一简称"国软"),清一色都是做政府项目的(他们能做大的原因我就不用说了吧),真正能做大的国软又有几家呢?这是为什么呢? 今天风吹就给大家简单分析下: 1."作坊"式管理 "作坊"往往是效率最高的,国软几乎都是从作…

Java SE、Java EE、Java ME三者的区别

说得简单点 Java SE 是做电脑上运行的软件。 Java EE 是用来做网站的-&#xff08;我们常见的JSP技术&#xff09; Java ME 是做手机软件的。 1. Java SE&#xff08;Java Platform&#xff0c;Standard Edition&#xff09;。Java SE 以前称为 J2SE。它允许开发和部署在桌面、…

FileBeats安装

FileBeats安装 FileBeats官方下载链接&#xff1a; https://www.elastic.co/downloads/beats/filebeat 也可以直接使用以下命令下载&#xff08;文章下载目录一概为/home/tools, 解压后文件夹放到 /home/apps下&#xff09; wget https://artifacts.elastic.co/downloads/beats…

《程序员代码面试指南》第三章 二叉树问题 二叉树节点间的最大距离问题

题目 二叉树节点间的最大距离问题 java代码 package com.lizhouwei.chapter3;/*** Description:二叉树节点间的最大距离问题* Author: lizhouwei* CreateDate: 2018/4/16 19:33* Modify by:* ModifyDate:*/ public class Chapter3_20 {public int maxDistance(Node head) {int[…

MySQL中函数CONCAT及GROUP_CONCAT 对应oracle中的wm_concat

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一、CONCAT&#xff08;&#xff09;函数 CONCAT&#xff08;&#xff09;函数用于将多个字符串连接成一个字符串。 使用数据表Info作为…

网络爬虫--16.BeautifulSoup4

文章目录一. BeautifulSoup4二. 解析实例三. 四大对象种类1. Tag2. NavigableString3. BeautifulSoup4. Comment四. 遍历文档树1.直接子节点 &#xff1a;.contents .children 属性1). .contents2). .children2. 所有子孙节点: .descendants 属性3. 节点内容: .string 属性五. …

Intel MKL 多线程设置

对于多核程序&#xff0c;多线程对于程序的性能至关重要。 下面&#xff0c;我们将对Intel MKL 有关多线程方面的设置做一些介绍&#xff1a; 我们提到MKL 支持多线程&#xff0c;它包括的两个概念&#xff1a; 1>MKL 是线程安全的&#xff1a; MKL在设计时&#xff0c;就保…

【LA3415 训练指南】保守的老师 【二分图最大独立集,最小割】

题意 Frank是一个思想有些保守的高中老师。有一次&#xff0c;他需要带一些学生出去旅行&#xff0c;但又怕其中一些学生在旅行中萌生爱意。为了降低这种事情发生的概率&#xff0c;他决定确保带出去的任意两个学生至少要满足下面四条中的一条。 1.身高相差大于40厘米 2.性别相…

行车记录仪稳定方案:TC358778XBG:RGB转MIPI DSI芯片,M-Star标配IC

原厂&#xff1a;Toshiba型号&#xff1a;TC358778XBG功能&#xff1a;TC358778XBG是一颗将RGB信号转换成MIPI DSI的芯片&#xff0c;最高分辨率支持到1920x1200&#xff0c;其应用图如下&#xff1a;产品特征&#xff1a;MIPI接口&#xff1a;&#xff08;1&#xff09;、支持…

java.sql.SQLException: 无法转换为内部表示之解决

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 这个错是因为 数据库中字段类型和程序中该字段类型不一致。 比如程序将某字段当做Integer类型&#xff0c; 而数据库存储又使用另外一…

网络爬虫--17.【BeautifuSoup4实战】爬取腾讯社招

文章目录一.要求二.代码示例一.要求 以腾讯社招页面来做演示&#xff1a;http://hr.tencent.com/position.php?&start10#a 使用BeautifuSoup4解析器&#xff0c;将招聘网页上的职位名称、职位类别、招聘人数、工作地点、发布时间&#xff0c;以及每个职位详情的点击链接…

public static void main(String[] args)的理解

public:权限修饰符&#xff0c;权限最大。static:随着MianDemo类的加载而加载&#xff0c;消失而消失。void: 没有返回值main: 函数名&#xff0c;jvm识别的特殊函数名(String[] args):定义了一个字符串数组参数。这个字符串数组是保存运行main函数时输入的参数的

Miller-Rabin素数测试

Miller-Rabin素数测试 给出一个小于1e18的数&#xff0c;问它是否为质数&#xff1f;不超过50组询问。hihocoder 我是真的菜&#xff0c;为了不误导他人&#xff0c;本篇仅供个人使用。 首先&#xff0c;一个1e18的数&#xff0c;朴素\(O(\sqrt{n})\)素数判定肯定爆炸。怎么办呢…