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

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. Sublime Text 2 JS 格式化插件 JsFormat

    这里下载这插件包 https://github.com/jdc0589/JsFormat ,点油下角的zip就能下载插件包放到sublime安装目录的DataPackages目录中重新打开sublim ...

  2. 【代码笔记】Web-JavaScript-JavaScript正则表达式

    一,效果图. 二,代码. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. 服务器端使用jstat定位GC问题的有关命令

    jstat命令可以查看堆内存各部分的使用量,以及加载类的数量. 命令的格式如下: jstat    [-命令选项]    [vmid]     [间隔时间/毫秒]      [查询次数]  注意!!! ...

  4. JVM调优(二)经验参数设置

    调优设置具体解析 堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制:系统的可用虚拟内存限制:系统的可用物理内存限制.32位系统下,一般限制在1.5 ...

  5. ionic开发中,输入法键盘弹出遮挡住div元素

    采用ionic 开发中,遇到键盘弹出遮挡元素的问题. 以登陆页面为例,输入用户名和密码时,键盘遮挡了登陆按钮. 最终采用自定义指令解决了问题: .directive('popupKeyBoardSho ...

  6. Android内存优化(二)解析Memory Monitor、Allocation Tracker和Heap Dump

    前言 要想做好内存优化工作,就要掌握两大部分的知识,一部分是知道并理解内存优化相关的原理,另一部分就是善于运用内存分析的工具.本篇就来介绍内存分析工具:Memory Monitor.Allocatio ...

  7. 制作OTA升级包

    OTA 软件包工具 本文地址http://wossoneri.github.io/2018/09/21/%5BAndroid%5D%5BFramework%5Dcreate-ota-update-zi ...

  8. SQL中常用日期函数

    --1 GETDATE() 返回当前系统日期SELECT GETDATE() --2 DATEADD(日期部分,常数,日期) 返回将日期的指定日期部分加常数后的结果返回 日期部分可以是: --常数为正 ...

  9. ansible部署 lnmp+wordpress

    如上,是项目的目录结构. common: 获取阿里云的yum源 mysql: 二进制安装mysql nginx: 编译安装nginx php-fpm:编译安装php-fpm wordpress: 获取 ...

  10. 卸载时候出现: windows installer 程序有问题。此安装需要的dll不能运行 的一个解决方法

    卸载时候出现: windows installer 程序有问题.此安装需要的dll不能运行 安装Your Uninstaller来卸载