python3爬取CSDN个人所有文章列表页
前言
我之前写了下载单篇文章的接口函数,结合这篇写的,就可以下载所有个人的所有文章了
代码实现
- 没什么技术含量就是简单的 xpath 处理,不过有意思的是有一位csdn 员工将自己的博客地址写到源码里面了,是一个隐藏的 div, 不过在代码中我已经给过滤掉了。
- 优化了响应时长,毕竟需要分页爬去,如果不用多线程响应时间必然会随着文章分页的增多而增多。
- 传递了一个列表给各个的线程,多线程共用一个列表,但是我没给列表访问的时候加锁,我认为没有删除列表中的元素的情况下,列表中的数据不会损失的,只不过添加顺序是变化的(如果这条想法不对,请评论大神一定要给我解答一下),最后根据更新文章时间重新对各个文章进行排序(捞干的就是一个列表中包含多个字典,要求根据字典指定的键值进行字典的排序),用到了 opertor 这个库
代码实现
import requests
from lxml import etree
import re
import threading
import operator
def get_page(url):
response = requests.get(url)
all_page = int(re.findall('var listTotal = (.*?) ;',response.text)[0])//20 +1
return all_page
def parse_article(url,article_list):
response = requests.get(url).text
x = etree.HTML(response)
x= x.xpath('//div[(@class="article-item-box csdn-tracking-statistics")][not(@style="display: none;")]')
# article_list = []
for item in x:
title = item.xpath('h4/a/text()')[1].strip()
url = item.xpath('h4/a/@href')[0]
pubdata = item.xpath('div[@class="info-box d-flex align-content-center"]/p/span[@class="date"]/text()')[0]
pageviews = item.xpath('div[@class="info-box d-flex align-content-center"]/p[3]/span/span/text()')[0]
comments = item.xpath('div[@class="info-box d-flex align-content-center"]/p[5]/span/span/text()')[0]
article = dict(
title = title,
url = url,
pubdata = pubdata,
pageviews = pageviews,
comments = comments
)
article_list.append(article)
# print(article_list)
def main(url):
main_url = url
all_page = get_page(url)
thread_list = []
data = []
for page in range(1,all_page+1):
url = main_url + '/article/list/' + str(page)
t = threading.Thread(target=parse_article,args=(url,data))
t.start()
thread_list.append(t)
for t in thread_list:
t.join()
data.sort(key=operator.itemgetter('pubdata'))
print(data,len(data))
if __name__ == '__main__':
url = 'https://blog.csdn.net/chouzhou9701'
main(url)
python3爬取CSDN个人所有文章列表页的更多相关文章
- Python实现抓取CSDN热门文章列表
1.使用工具: Python3.5 BeautifulSoup 2.抓取网站: csdn热门文章列表 http://blog.csdn.net/hot.html 3.分析网站代码: 4.实现代码: _ ...
- 信息领域热词分析系统--java爬取CSDN中文章标题即链接
package zuoye1; import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.SQLExce ...
- 第4章 scrapy爬取知名技术文章网站(2)
4-8~9 编写spider爬取jobbole的所有文章 # -*- coding: utf-8 -*- import re import scrapy import datetime from sc ...
- [Python学习] 简单爬取CSDN下载资源信息
这是一篇Python爬取CSDN下载资源信息的样例,主要是通过urllib2获取CSDN某个人全部资源的资源URL.资源名称.下载次数.分数等信息.写这篇文章的原因是我想获取自己的资源全部的评论信息. ...
- python3爬取女神图片,破解盗链问题
title: python3爬取女神图片,破解盗链问题 date: 2018-04-22 08:26:00 tags: [python3,美女,图片抓取,爬虫, 盗链] comments: true ...
- Python scrapy爬取带验证码的列表数据
首先所需要的环境:(我用的是Python2的,可以选择python3,具体遇到的问题自行解决,目前我这边几百万的数据量爬取) 环境: Python 2.7.10 Scrapy Scrapy 1.5.0 ...
- Python3爬取人人网(校内网)个人照片及朋友照片,并一键下载到本地~~~附源代码
题记: 11月14日早晨8点,人人网发布公告,宣布人人公司将人人网社交平台业务相关资产以2000万美元的现金加4000万美元的股票对价出售予北京多牛传媒,自此,人人公司将专注于境内的二手车业务和在美国 ...
- python3爬取微博评论并存为xlsx
python3爬取微博评论并存为xlsx**由于微博电脑端的网页版页面比较复杂,我们可以访问手机端的微博网站,网址为:https://m.weibo.cn/一.访问微博网站,找到热门推荐链接我们打开微 ...
- python 使用selenium模块爬取同一个url下不同页的内容(浏览器模拟人工翻页)
页面翻页,下一页可能是一个新的url 也有可能是用js进行页面跳转,url不变,解决方法是实现浏览器模拟人工翻页 目标:爬取同一个url下不同页的数据(上述第二种情况) url:http://www. ...
- Python3 爬取微信好友基本信息,并进行数据清洗
Python3 爬取微信好友基本信息,并进行数据清洗 1,登录获取好友基础信息: 好友的获取方法为get_friends,将会返回完整的好友列表. 其中每个好友为一个字典 列表的第一项为本人的账号信息 ...
随机推荐
- 使用Pipeline抽象业务生命周期流程
上篇关于流程引擎的文章还是快两年以前的<微服务业务生命周期流程管控引擎>,这中间各种低代码平台层出不穷,虽然有些仅仅是OA+表单的再度包装,但有些的确是在逻辑和操作单元层面进行了真正的高度 ...
- 一文带你体验MRS HetuEngine如何实现跨源跨域分析
摘要: HetuEngine作为MRS服务中交互式分析&多源统一SQL引擎,亲自全程体验其如何实现多数据源的跨源跨域分析能力. 本文分享自华为云社区<MRS HetuEngine体验跨源 ...
- 《网页设计基础——CSS的四种引入方式详解》
网页设计基础--CSS的四种引入方式详解 一.行内式: 规则: 1. 行内式是所有样式方法中最为直接的一种,它直接对HTML的标记使用style属性,然后将CSS代码直接写在其中. 格 ...
- Docker 容器默认root账号运行,很不安全!
文章转载自:https://mp.weixin.qq.com/s/AeZoEKZBWFYwyhgicpgD4Q
- MySQL数据表更新模板
-- ---------------------------- -- 新增表 -- ---------------------------- CREATE TABLE `biz_circle_lead ...
- Beats:使用 Filebeat 导入 JSON 格式的日志文件
转载自:https://blog.csdn.net/UbuntuTouch/article/details/108504014 在今天的文章中,我来用另外的一种方式来展示如何导入一个 JSON 格式的 ...
- css百叶窗
效果图: css代码块: <style> *{//默认样式清除 margin: 0; padding: 0; } .content{//设置外层div的宽高,超出后隐藏 margin: 1 ...
- vue3中pinia的使用总结
pinia的简介和优势: Pinia是Vue生态里Vuex的代替者,一个全新Vue的状态管理库.在Vue3成为正式版以后,尤雨溪强势推荐的项目就是Pinia.那先来看看Pinia比Vuex好的地方,也 ...
- Tomcat实战之路
目录 第一节.安装升级 1.1.linux初始化 1.2.安装 1.3.升级 第二节.配置 2.1.虚拟主机 2.2.默认网站首页路径 2.3.跳转 2.4.配置Tomcat日志 第三节.安全 3.1 ...
- 2022-08-11-emo了
layout: post cid: 7 title: emo了 slug: 7 date: 2022/08/11 10:14:00 updated: 2022/08/11 10:15:40 statu ...