注意:如果想爬取详情页的信息请按须添加方法

import requests
import os
import re
import threading
from lxml import etree
#爬去详情页得HTML内容
class CnBeta(object):
def get_congtent(self,url):
#获取网页首页HTML信息
r = requests.get(url)
#将获取得HTML页面进行解码
html = r.content.decode('utf-8')
#返回值
return html
def xpath_html(self,html):
html = etree.HTML(html)
#利用xpath进行解析HTML模板
new_url = html.xpath("//dt/a/@href")
 
#定义容器把获取到得所有详情页url添加到容器
url_list = []
#定义容器把截取后得文件名字添加到名字容器
name_list = []
#遍历url列表容器
for i in new_url:
#由于获取到得url不同 利用判断进行手动更改
if "http:" not in i:
h = "http:" + i + ".htm"
url_list.append(h)
else:
url_list.append(i)
#对获取到得url进行链式切片获取想要得字段 用来命名文件名字
file_name = i.split('/')[-1].split('.')[0]
#把获取到的文件名字添加到名字容器
name_list.append(file_name)
#返回两个值
return url_list,name_list
 
#定义方法获取详情页URL
def load_html(self,url,name):
#获取详情页HTML信息
r = requests.get(url)
#对详情页HTML信息进行解码
html = r.content.decode("utf-8")
#把相应得HTML信息写入指定文件夹 并把动态传过来得文件名字直接写入并加入指定文件后缀
with open('E:/新建文件夹/'+name+".html",'w',encoding="utf-8") as f:
f.write(html)
if __name__ == "__main__":
#实例化对象
cndeta = CnBeta()
#调用方法并传入首页URL
html = cndeta.get_congtent('https://www.cnbeta.com/')
#定义两个变量分别接收方法传过来的两个参数
url,name = cndeta.xpath_html(html)
#循环遍历url的个数 定义线程执行的个数 在这里直接执行len(url)个线程
for i in range(len(url)):
#定义多线程爬去 target指定方法 args指定相应的url和文件名字
s = threading.Thread(target=cndeta.load_html,args=(url[i],name[i]))
#守护线程
s.setDaemon(True)
#执行线程
s.start()
#阻塞主线程
s.join()

多线程爬虫爬取详情页HTML的更多相关文章

  1. Python多线程爬虫爬取电影天堂资源

    最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. ...

  2. scrapy爬取网址,进而爬取详情页问题

    1.最容易出现的问题是爬取到的url大多为相对路径,如果直接将爬取到的url进行二次爬取就会出现以下报错: raise ValueError('Missing scheme in request ur ...

  3. Python多线程爬虫爬取网页图片

    临近期末考试,但是根本不想复习!啊啊啊啊啊啊啊!!!! 于是做了一个爬虫,网址为 https://yande.re,网页图片为动漫美图(图片带点颜色........宅男福利 github项目地址为:h ...

  4. 一个简单的定向python爬虫爬取指定页面的jpg图片

    import requests as r import re resul=r.get("http://www.imooc.com/course/list") urlinfo=re. ...

  5. python爬虫—爬取英文名以及正则表达式的介绍

    python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个cs ...

  6. 爬虫(GET)——爬取多页的html

    工具:python3 目标:将编写的代码封装,不同函数完成不同功能,爬取任意页数的html 新学语法:with open as 除了有更优雅的语法,with还可以很好的处理上下文环境产生的异常. # ...

  7. (java)Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页

    Jsoup爬虫学习--获取智联招聘(老网站)的全国java职位信息,爬取10页,输出 职位名称*****公司名称*****职位月薪*****工作地点*****发布日期 import java.io.I ...

  8. python爬虫系列之爬取多页gif图像

                   python爬取多页gif图像 作者:vpoet mail:vpoet_sir@163.com #coding:utf-8 import urllib import ur ...

  9. 使用Python爬虫爬取网络美女图片

    代码地址如下:http://www.demodashi.com/demo/13500.html 准备工作 安装python3.6 略 安装requests库(用于请求静态页面) pip install ...

随机推荐

  1. vue从入门到进阶:计算属性computed与侦听器watch(三)

    计算属性computed 模板内的表达式非常便利,但是设计它们的初衷是用于简单运算的.在模板中放入太多的逻辑会让模板过重且难以维护.例如: <div id="example" ...

  2. IE浏览器的ActiveXObject对象以及FileSystemobject的应用扩展(完成)

    ActiveXObject 对象 启用和返回对自动化对象的引用.此对象仅用于实例化自动化对象,且此对象没有成员. 警告:此对象为 Microsoft 扩展,仅在 Internet Explorer 中 ...

  3. 洛谷P2860 [USACO06JAN]冗余路径Redundant Paths(tarjan求边双联通分量)

    题目描述 In order to get from one of the F (1 <= F <= 5,000) grazing fields (which are numbered 1. ...

  4. Spring声明式事务配置

    1.首先在/WEB-INF/applicationContext.xml添加以下内容: <!-- 配置事务管理器 --> <bean id="transactionMana ...

  5. arcgis在折点处打断并建立网络分析(最短路径等问题)

    目的:GIS网络分析用于对段路径等问题.这里仅仅讲述如何建立网络分析. 网络建立前必须满足以下条件 1.要素文件在节点处打断(本文下面会叙述) 2.要素文件在地理数据库里的数据集里(一般是这样) 3. ...

  6. F5负载的应用IIS日志记录的不是真实IP的处理方法

    如果没有这一项,在服务里添加上 将F5XForwardedFor.dll拷贝到应用目录下 添加筛选器: 名称:F5XForwardedFor 可执行文件:F5XForwardedFor.dll所在的目 ...

  7. Kotlin入门(29)任务Runnable

    任务Runnable定义了一个可以独立运行的代码片段,通常用于界面控件的延迟处理,比如有时为了避免同时占用某种资源造成冲突,有时则是为了反复间隔刷新界面从而产生动画效果.运行一个任务也有多种形式,既可 ...

  8. Java的内存 -JVM 内存管理

    一.综述 如果你学过C或者C++,那么你应该感受过它们对内存那种强大的掌控力.但是强大的能力往往需要更强大的控制力才能保证能力不被滥用,如果滥用C/C++的内存管理那么很容易出现指针满天飞的情况,不出 ...

  9. CentOS7中启动Tomcat后,8080端口不能被外部访问的解决办法。

    运行:/sbin/iptables -I INPUT -p tcp --dport 8080 -j ACCEPT

  10. C#编辑EXE使用的appSettings节点的Config文件

    /// <summary> /// 保存配置文件的设定 /// </summary> /// <param name="Key"></pa ...