思路是 先构造url列表 all_url

然后

for i in range(0, len(all_url)):

urlqueue.put(all_url[i])

然后get 做到每次从列表中取出url

现在问题是,range后面 无法写成 0到列表长度

会显示IndexError: list index out of range

意思是 索引错误:列表索引超出范围

而且列表是没有任何问题的,没有空

而且如果列表长度是2000, 那么只能range(0, 1000),这样就无任何报错

这样就很麻烦

下面是代码

import requests

from lxml import html

import time

import threading

from queue import Queue

class Spider(threading.Thread):

def __init__(self, name, urlqueue):

super().__init__()

self.name = name

self.urlqueue = urlqueue

def run(self):

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.4094.1 Safari/537.36'

}

print('线程 :' + self.name + '启动')

while not self.urlqueue.empty():

try:

url = self.urlqueue.get()

rep = requests.get(url, headers = headers, timeout = 5)

time.sleep(1)

if rep.status_code == 200:

print("链接成功")

self.parse(rep)

print(url + " 爬取完成")

except Exception as e:

print("主页::" +url + " 链接失败, 原因::", e)

pass

print('线程 :' + self.name + '结束')

def parse(self, rep):

con = rep.content

sel = html.fromstring(con)

title = sel.xpath('//div[@class="titmain"]/h1/text()')

title = str(title).replace(']', '').replace('[', '').replace("'", '').replace(",", '').replace(r"\r\n", "").replace('"', '').replace(' ', '').replace(r'\xa0', '').replace('?', '').replace('/', '').replace(r'\u3000', ' ')

date = sel.xpath('//div[@class="texttit_m1"]/p/text()')

date = str(date).replace(']', '').replace('[', '').replace("'", '').replace(r'\u3000', ' ')

if len(date) > 20:

file_name = title + ".txt"

a = open(file_name, "w+", encoding='utf-8')

a.write('\n' + str(title) + '\n' + '\n' + str(date))

print(file_name + '保存成功')

a.close

else:

pass

if name == '__main__':

with open('未爬取url.txt') as f:

data = f.readline()

#读取数据行

james = data.strip().split(',')

#将数据转换为列表

all_url = []

for jame in james:

a=eval(jame)

#去除ifu两端引号

all_url.append(a)

print(len(all_url))

start = time.time()

urlqueue = Queue()

threadNum = 3 #线程数量

for i in range(0, 1468):

urlqueue.put(all_url[i]) #问题在这里

del all_url[i]

threads = []

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

thread = Spider("线程" + str(i), urlqueue)

thread.start()

threads.append(thread)

for thread in threads:

thread.join()

with open('未爬取url.txt', 'w+') as b:

b.write('\n'.join([str(all_url)]))

b.write('\n' + '=' *50 + '\n')

b.close

print(' 未爬取url 保存完成')

end = time.time()

print("-------------------------------")

print("下载完成. 用时{}秒".format(end-start))

另外 url是从txt读的 不知道怎么传上来, 最后构造的all_url列表是肯定没有问题的

python多线程队列爬虫流程图_python 多线程爬虫 队列queue问题。相关推荐

  1. 树莓派python爬虫 股票_Python树莓派 爬虫心得

    平台: 树莓派 linux 语言:python 搞一个爬虫都清楚是怎么回事,我这里玩过之后有下面的心得: 为什么要用树莓派呢,省电啊,没乱七八糟的桌面问题,可以一直开着. 1.树莓派上的磁盘写入对于不 ...

  2. python 爬虫框架_Python网络爬虫-scrapy框架的使用

    1. Scrapy 1.1 Scrapy框架的安装 Scrapy是一个十分强大的爬虫框架,依赖的库比较多,至少需要依赖的库有Twisted .lxml和pyOpenSSL.在不同的平台环境下,它所依赖 ...

  3. python 爬虫论_Python网络爬虫(理论篇)

    欢迎关注公众号:Python爬虫数据分析挖掘,回复[开源源码]免费获取更多开源项目源码 网络爬虫的组成 网络爬虫由控制节点,爬虫节点,资源库构成. 网络爬虫的控制节点和爬虫节点的结构关系 控制节点(爬 ...

  4. java爬虫框架_Python,爬虫开发的不二选择

    互联网是由一个个站点和网络设备组成的大网,我们通过浏览器访问站点,站点把HTML.JS.CSS代码返回给浏览器,这些代码经过浏览器解析.渲染,将丰富多彩的网页呈现我们眼前. 如果我们把互联网比作一张大 ...

  5. python实现栈的操作_python简单实现队列和栈push、pop操作

    栈: # -*- coding: utf-8 -*- #定义序列 lst=[] def pop(): if(len(lst)==0): print"栈为空","无法出栈& ...

  6. python2 队列的使用_python双端队列原理、实现与使用方法分析

    本文实例讲述了python双端队列原理.实现与使用方法.分享给大家供大家参考,具体如下: 双端队列 双端队列(deque,全名double-ended queue),是一种具有队列和栈的性质的数据结构 ...

  7. python可以开多少线程_python多线程详解

    python多线程详解 一.线程介绍 什么是线程 线程(Thread)也叫轻量级进程,是操作系统能够进行运算调度的最小单位,它被包涵在进程之中,是进程中的实际运作单位.线程自己不拥有系统资源,只拥有一 ...

  8. python分别统计男女人数_python实现爬虫统计学校BBS男女比例(一),python男女比例...

    python实现爬虫统计学校BBS男女比例(一),python男女比例 一.项目需求 前言:BBS上每个id对应一个用户,他们注册时候会填写性别(男.女.保密三选一). 经过检查,BBS注册用户的id ...

  9. python爬虫去重_Python网络爬虫(7):URL去重

    摘要:从零开始写爬虫,初学者的速成指南! 封面: image 本期我们来聊聊URL去重那些事儿.以前我们曾使用Python的字典来保存抓取过的URL,目的是将重复抓取的URL去除,避免多次抓取同一网页 ...

最新文章

  1. Fedora 7 播放器totem
  2. Eclipse Plug-in Hello world
  3. 作者:马浚诚(1987-),男,中国农业科学院农业环境与可持续发展研究所助理研究员。...
  4. 本人24岁,女,现在是一所双非大学的大四本科生,被保研到了华中师范大学,应该去读吗?
  5. Django中admin
  6. Linux网络编程--socket
  7. Java面试准备(一)
  8. 怎么制作真人qq秀_NBA赛事最震撼的开场秀
  9. linux iozone测试工具,iozone命令 – 进行linux下的硬盘性能测试
  10. Python-玩转数据-XML 解析
  11. 局域网中电脑ping不通解决办法
  12. 跟着ALEX 学python day2 基础2 模块 数据类型 运算符 列表 元组 字典 字符串的常用操作...
  13. OpenJudge1661:Bomb Game(翻译 day 6)
  14. ai条码插件免安装_AI条形码插件(含支持Illustrator cs6的条码脚本插件)
  15. pitfall when implementing multiple interfaces
  16. arduino nano + nrf24
  17. linux替换屏幕保护进程,有没有一个体面的方式来阻止linux中的屏幕保护程序?...
  18. 【欣赏】一组唯美的图片
  19. 车企围攻整车OS,这张“新王牌”怎么打?
  20. 阿里云 ECS 服务器上如何搭建 Hadoop 集群详细步骤图解

热门文章

  1. QStyleOptionGraphicsItem实现自绘按钮悬浮按下状态
  2. 开源项目管理软件 禅道
  3. Linux 基础知识(九)
  4. 算法4------字符串的字典序最长子序列
  5. 新同事,git又报错Please move or remove them before you merge
  6. 公布自己的pods到CocoaPods trunk 及问题记录
  7. Run P4 without P4factory - A Simple Example In Tutorials. -2
  8. 如何安装使用MQCache缓存服务器(适用X300型或者X500型)
  9. Lucene.Net(转)
  10. 安装中文版cacti监控华为交换机流量并实现95计费