python多线程爬取多个网页_python多线程爬取网页

#-*- encoding:utf8 -*-

‘‘‘

Created on 2018年12月25日

@author: Administrator

‘‘‘

from multiprocessing.dummy import Pool as pl

import csv

import requests

from lxml import etree

def spider(url):

header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"}

r = requests.get(url=url, headers=header)

return r.json()

def spider_detail(url):

resp = spider(url)

title = resp.get(‘data‘).get(‘title‘)

print(title)

content = resp.get(‘data‘).get(‘content‘)

try:

title_clear = title.replace(‘|‘, ‘‘).replace(‘?‘, ‘‘)

content_clear = content.replace(‘

‘,‘\n\n‘).replace(‘

‘,‘‘)

sel = etree.HTML(content_clear)

content_clear = sel.xpath(‘string(//*)‘)

artical_write(title_clear, content_clear)

print(title_clear)

except:

pass

def get_all_urls(page_number):

for i in range(1, page_number + 1):

url = ‘https://36kr.com/api/search-column/mainsite?per_page=20&page=‘ + str(i)

resp = spider(url)

artical_data = resp.get(‘data‘).get(‘items‘)

for url_data in artical_data:

number = url_data.get(‘id‘)

artical_url = ‘https://36kr.com/api/post/‘+ str(number) +‘/next‘

yield artical_url

def artical_write(title, content):

with open(‘d:/spider_data/11.11/‘ + title + ‘.txt‘, ‘wt‘, encoding=‘utf-8‘) as f:

f.write(content)

if __name__ == ‘__main__‘:

# 线程数, 默认为cpu核心数

pool = pl(4)

# url列表收集

all_url = []

for url in get_all_urls(100):

all_url.append(url)

# 多线程爬取

pool.map(spider_detail, all_url)

pool.close()

pool.join()

原文:https://www.cnblogs.com/perilong16/p/10177148.html

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

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

相关文章

layui 分页ajax,实现Ajax异步的layui分页

页面代码:人才推荐姓名学历技能经验住址联系方式 ${res}${data}于千万年之中时间的无涯的荒野里…时间的无涯的荒野里…--%>js代码//加载完成$(function(){var sherchkey${positioninfo.name};savePosition();//保存修改方法getPeopleList(1,5,sherchkey);//获取人才列表// …

Gen系列服务器,新计算、新体验 | 新华三全新HPE Gen10系列服务器响彻“云”端

数字经济时代的数据中心正在加速向云计算融合,用户将面临传统架构与云架构并存的混合IT模式。如何既拥有专有数据中心对数据完全可控以及对关键业务充分优化的优势,又能拥有云计算的灵活弹性?如何有效利旧并满足混合IT架构的需求?…

python 异常处理 变量_Python基础入门:从变量到异常处理

一 . 条件语句1.if-else 语句当if语句后的条件结果表达式为假&#xff0c;则执行else 语句后的代码。如若输入数字非666&#xff0c;则会输出“猜错了&#xff0c;小姐姐现在心里想的为666“2.if 语句支持嵌套hi6 hi>2 执行 if hi>7 6<7 所以无输出hi1 hi<2 执行 p…

web系统四层结构中服务器端,基于.NET平台构建四层B/S结构的动态网站

摘要&#xff1a;Web是基于Internet技术的一种应用层服务,具有后台数据库支持的n层B&#xff0f;S结构已经成为动态Web应用的主流。虽然动态网站开发工作的主要是进行服务器端应用程序的开发,但是B&#xff0f;S结构动态Web的应用要涉及浏览器、Web服务器、服务器端应用程序、数…

收藏功能_微软Edge获得了新的收藏夹菜单、PDF功能等

作为其今年早些时候概述的战略的一部分&#xff0c;微软Edge现在正在向所有Windows 10 PC推出。与经典的Edge不同&#xff0c;Chromium Edge与任何特定的Windows更新无关&#xff0c;但微软又开始为该浏览器进行了一系列令人兴奋的改进。新的Edge基于Chromium&#xff0c;它还带…

服务器LIMIT是什么信号,Postfix添加milter-limit配置方案

[安装环境]操作系统&#xff1a;CentOS 5.6MAT&#xff1a;POSTFIX2.8.4安装之前必须保证POSTFIX能正常收发信如果已经安装过Berkeley Db3以上版本可以不安装新的DB(但是注意引入db.so)[安装步骤]1、milter-limit-0.14.tar.gz及libsnert-1.71.6.tar.gz包的获取方法需要创建一个…

数据存储方式_视频监控系统的数据存储方式的概念及应用

DAS&#xff1a;直连存储&#xff0c;直连式存储与服务器主机之间的连接通常采用SCSI连接&#xff0c;SCSI通道是IO瓶颈;服务器主机SCSI ID资源有限&#xff0c;能够建立的SCSI通道连接有限。无论直连式存储还是服务器主机的扩展&#xff0c;从一台服务器扩展为多台服务器组成的…

ubuntu18 防火墙关闭_Ubuntu 18.04 关闭及开启防火墙

Ubuntu 内建使用 UFW (Uncomplicated Firewall) 作为防火墙管理工具, 一般情况下都会开启防火墙, 但有些特殊情况, 例如测试环境需要关闭防火墙作测试, 或者对网络设定进行除错等。以下是在 Ubuntu 18.04 关闭防火墙的方法。首先检查目前防火墙是否已经开启, 执行以下指令:$ su…

vue从url中获取token并加入到 请求头里_轻流amp;amp;企业微信——获取打卡数据...

企业微信开放了打卡应用的api&#xff0c;功能包括查询打卡数据&#xff0c;能获取到用户、地点、时间、打卡类型等信息&#xff0c;在轻流中可以基于以上数据做一段时间内的迟到/事假等统计&#xff0c;以及更深层数据处理&#xff0c;方便管理。第一步&#xff1a;获取access…

单片机串口通信学号显示_触摸屏与单片机串口通信测试

工业现场在使用触摸屏的时候&#xff0c;与第三方控制器进行通信连接的时候&#xff0c;一般都是使用成熟的通信协议进行通信连接。而这些协议的实现过程&#xff0c;触摸屏厂商也已经在编程环境中进行了封装集成&#xff0c;对于使用的工程师来说&#xff0c;通信的数据交换过…

2020笔记本性价比之王_2020轻薄本性价比之王_2020轻薄本哪款好

随着科技的进步&#xff0c;如今笔记本的功能愈发强大&#xff0c;接听电话、开展商务会议等&#xff0c;因此现在人们对于笔记本电脑的依赖程度愈发明显。厚重的商务本和游戏本显然不适合随身携带&#xff0c;因此轻薄本的出现受到白领们的广泛吹捧&#xff0c;那么2020哪款轻…

scp命令默认传输速度多大_每天一个linux命令(60):scp命令

scp是secure copy的简写&#xff0c;用于在Linux下进行远程拷贝文件的命令&#xff0c;和它类似的命令有cp&#xff0c;不过cp只是在本机进行拷贝不能跨服务器&#xff0c;而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读 read only system时&#xff0c…

asp绑定gridview属性_如何在ASP.NET Core中自定义Azure Storage File Provider

主题&#xff1a;如何在ASP.NET Core中自定义Azure Storage File Provider作者&#xff1a; Lamond Lu地址: https://www.cnblogs.com/lwqlun/p/10406566.html项目源代码&#xff1a; https://github.com/lamondlu/AzureFileProvider背景ASP.NET Core是一个扩展性非常高的框架…

mysql中为表创建副本_如何为数据库建立一个副本?

展开全部大多情况下&#xff0c;需要可靠而有效地克隆 MySQL 实例e69da5e887aa62616964757a686964616f31333433643663数据。这包括 MySQL 高可用的解决方案&#xff0c;其中需要在将实例加入组复制集群之前配置实例&#xff0c;或者在经典复制模型中将其添加为 Slave。为复制拓…

mysql考勤系统设计函数_Mysql实战之员工考勤系统数据库建立

一、项目背景随着企业的规模不断扩大&#xff0c;企业人事管理的日趋复杂和企业人员的增多&#xff0c;迫切需要开发基于网络的员工考勤管理系统来提高管理工作的效率。二、研究目的以中小型企业的考勤管理业务为依托&#xff0c;结合科学管理的理论&#xff0c;设计并开发一个…

linux mysql 修改字符集_linux下mysql修改字符集,远程连接

安装时候很简单&#xff0c;但是安装了后一般不能用安装后 首先执行mysql -u root mysql这是就会进入mysql命令窗口&#xff0c;这样是可以使用的&#xff0c;但是我们要先设置密码1、先设置密码UPDATE user SET PasswordPASSWORD(123456) where USERroot;2、重新设置一遍密码&…

mysql授权远程访问命令_mysql 授权远程连接

解决方案改表法可能是你的帐号不允许从远程登陆&#xff0c;只能在localhost。这个时候只要在localhost的那台电脑&#xff0c;登入mysql后&#xff0c;更改 "mysql" 数据库里的 "user" 表里的 "host" 项&#xff0c;从"localhost"改称…

MySQL根据员工姓名所在部门_用一条SQL语句显示所有人员的姓名及所在部门

给定以下两个表&#xff1a;部门ID部门名称1部门12部门23部门34部门4人员ID人员姓名部门ID1姓名112姓名213姓名324姓名435姓名55(1)用一条SQL语句显示所有人员的姓名及所在部门&#xff0c;没有部门的用“...给定以下两个表&#xff1a;部门ID 部门名称1 部门12 部门23 部门34 …

mysql begin operations_MySQL入门(七):More JOIN operations

Sqlzoo习题练习&#xff1a;More JOIN operations下面会涉及到更多连接的概念。数据库由三个表组成&#xff1a;movie , actor 和 casting以及三个表之间的关系。下面为More JOIN 习题内容&#xff1a;--#1/*List the films where the yr is 1962 [Show id, title]*/SELECT id,…

win10安装mysql5.7.15_win10上如何安装mysql5.7.16(解压缩版)

注&#xff1a;本文涉及的是解压缩版的安装安装教程下载mysql解压缩下载的文件修改ini文件(在解压缩后的mysql文件夹中)实际上修改的是my-default.ini文件在文件中添加如下路径和地址其中的data文件夹是没有的必须自己创建。# These are commonly set, remove the # and set as…