爬虫本质就是将网站或者接口的数据经过筛选后按需求保存

这里实现一个简单爬虫仅供参考

import requests
import bs4
import threading
import queue
import os class GetWebAndHandle(threading.Thread):
status = {
'work': True,
'path': 'your-path',
'suffix': '.html'
} headers = {
'User-Agent': 'your-agent',
'Host': 'www.baidu.com'
} def __init__(self, kw, page_que):
super(GetWebAndHandle, self).__init__()
self.page_que = page_que
self.url = 'https://www.baidu.com/s?wd=' + kw + '&pn='
self.file_path_name = self.status['path'] + self.name + self.status['suffix'] def run(self):
if os.path.isfile(self.file_path_name):
os.remove(self.file_path_name) while self.status['work']:
try:
url = self.url + self.page_que.get(False)
response = requests.get(url, headers=self.headers)
self.handle(response.text)
except queue.Empty:
self.status['work'] = False def handle(self, response):
soup = bs4.BeautifulSoup(response)
sifted = soup.find_all('div', 'result c-container ')
with open(self.file_path_name, mode='ab') as file:
for sift in sifted:
file.write(sift.encode('utf-8'))
file.write(('-=-' * 30).encode('utf-8')) if __name__ == '__main__': # ssl._create_default_https_context = ssl._create_unverified_context() kw = input('输入关键字')
t_num = min(max(int(input('需要的线程数')), 1), 4)
p_num = min(max(int(input('需要的页数')), 1), 20) page_que = queue.Queue(p_num)
for p in range(p_num):
page_que.put(str(p) + '') thread_list = []
for i in range(t_num):
spider_thread = GetWebAndHandle(kw, page_que)
spider_thread.start()
thread_list.append(spider_thread)

python多线程简单爬虫的更多相关文章

  1. Python开发简单爬虫 - 慕课网

    课程链接:Python开发简单爬虫 环境搭建: Eclipse+PyDev配置搭建Python开发环境 Python入门基础教程 用Eclipse编写Python程序   课程目录 第1章 课程介绍 ...

  2. python多线程简单例子

    python多线程简单例子 作者:vpoet mail:vpoet_sir@163.com import thread def childthread(threadid): print "I ...

  3. Python开发简单爬虫

    简单爬虫框架: 爬虫调度器 -> URL管理器 -> 网页下载器(urllib2) -> 网页解析器(BeautifulSoup) -> 价值数据 Demo1: # codin ...

  4. python实现简单爬虫抓取图片

    最近在学习python,正如大家所知,python在网络爬虫方面有着广泛的应用,下面是一个利用python程序抓取网络图片的简单程序,可以批量下载一个网站更新的图片,其中使用了代理IP的技术. imp ...

  5. Python开发简单爬虫(一)

    一 .简单爬虫架构: 爬虫调度端:启动爬虫,停止爬虫,监视爬虫运行情况 URL管理器:对将要爬取的和已经爬取过的URL进行管理:可取出带爬取的URL,将其传送给“网页下载器” 网页下载器:将URL指定 ...

  6. Python做简单爬虫(urllib.request怎么抓取https以及伪装浏览器访问的方法)

    一:抓取简单的页面: 用Python来做爬虫抓取网站这个功能很强大,今天试着抓取了一下百度的首页,很成功,来看一下步骤吧 首先需要准备工具: 1.python:自己比较喜欢用新的东西,所以用的是Pyt ...

  7. Python多线程在爬虫中的应用

    题记:作为测试工程师经常需要解决测试数据来源的问题,解决思路无非是三种:(1)直接从生产环境拷贝真实数据 (2)从互联网上爬取数据 (3)自己用脚本或者工具造数据.前段时间,为了获取更多的测试数据,笔 ...

  8. 教你如何入手用python实现简单爬虫微信公众号并下载视频

    主要功能 如何简单爬虫微信公众号 获取信息:标题.摘要.封面.文章地址 自动批量下载公众号内的视频 一.获取公众号信息:标题.摘要.封面.文章URL 操作步骤: 1.先自己申请一个公众号 2.登录自己 ...

  9. python实现简单爬虫功能

    在我们日常上网浏览网页的时候,经常会看到一些好看的图片,我们就希望把这些图片保存下载,或者用户用来做桌面壁纸,或者用来做设计的素材. 我们最常规的做法就是通过鼠标右键,选择另存为.但有些图片鼠标右键的 ...

随机推荐

  1. js带“.”的对象属性名怎么使用

    问题:这样的json对象(event) { "title": "title", "alert":"ding", &quo ...

  2. FCC JS基础算法题(13):Caesars Cipher(凯撒密码)

    题目描述: 下面我们来介绍风靡全球的凯撒密码Caesar cipher,又叫移位密码.移位密码也就是密码中的字母会按照指定的数量来做移位.一个常见的案例就是ROT13密码,字母会移位13个位置.由'A ...

  3. nginx下运行php的程序时返回200访问却是空白页问题的解决方法

    由于nginx与php-fpm之间的一个小bug,会导致这样的现象: 网站中的静态页面 *.html 都能正常访问,而 *.php 文件虽然会返回200状态码, 但实际输出给浏览器的页面内容却是空白. ...

  4. 在myeclipse中maven项目关于ssh整合时通过pom.xml导入依赖是pom.xml头部会报错

    错误如下 ArtifactTransferException: Failure to transfer org.springframework:spring-jdbc:jar:3.0.5.RELEAS ...

  5. 搭建数据驱动框架第一步-实现一个构造函数,将对Excel文件的基本操作API都封装进去

    Python处理Excel常用操作就是读和写,我的需求是需要在原excel文件中进行读写操作.共用到了两个模块xlrd和openpyxl,这两个模块都是需要自己去安装的.openpyxl只能用来处理 ...

  6. 公网定制化yum仓库部署

    公网定制化yum仓库部署 (1)搭建公网源yum仓库 安装wget aliyun源 # wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun ...

  7. jsp弹窗并跳转

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletExcepti ...

  8. Oracle 导出的表不全,以及数据库版本不同导入报错

    公司有两个环境下的数据库,版本不同,一个是11g r2,另一个是10g r2 首先在11g r2下用exp导出数据库备份文件,发现部分表缺失. 原来这部分表是空的,11G中新特性,当表无数据时,不分配 ...

  9. node.js 调用第三方服务

    node作为客户端调用第三方服务   nodejs.cn/api 1. let http = require('http'); let util = require("util") ...

  10. Linux上的文件管理类命令(2)

    Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示: wc 统计文件中的字节数.单词数.行数.并将统计结果显示输出 -c, --bytes 打印字节数 [root@qingchen ...