多线程爬虫爬取详情页HTML

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

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()

原文地址:https://www.cnblogs.com/wjohh/p/10503605.html

时间: 2024-08-12 05:31:42

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

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

最近花些时间学习了一下Python,并写了一个多线程的爬虫程序来获取电影天堂上资源的迅雷下载地址,代码已经上传到GitHub上了,需要的同学可以自行下载.刚开始学习python希望可以获得宝贵的意见. 先来简单介绍一下,网络爬虫的基本实现原理吧.一个爬虫首先要给它一个起点,所以需要精心选取一些URL作为起点,然后我们的爬虫从这些起点出发,抓取并解析所抓取到的页面,将所需要的信息提取出来,同时获得的新的URL插入到队列中作为下一次爬取的起点.这样不断地循环,一直到获得你想得到的所有的信息爬虫的任务

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

1.最容易出现的问题是爬取到的url大多为相对路径,如果直接将爬取到的url进行二次爬取就会出现以下报错: raise ValueError('Missing scheme in request url: %s' % self._url),该错误的意思是request的url为无效链接. 解决方法:将相对路径转换为绝对路径 1 # -*- coding: utf-8 -*- 2 import scrapy 3 from pyquery import PyQuery 4 from ..items

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

python爬虫—爬取英文名以及正则表达式的介绍 爬取英文名: 一.  爬虫模块详细设计 (1)整体思路 对于本次爬取英文名数据的爬虫实现,我的思路是先将A-Z所有英文名的连接爬取出来,保存在一个csv文件中:再读取csv文件当中的每个英文名链接,采用循环的方法读取每一个英文名链接,根据每个英文名链接爬取每个链接中的数据,保存在新的csv文件当中. 需要写一个爬取英文名链接的函数.将爬取的内容保存在csv文件的函数以及读取csv文件内容的函数.爬取英文名详情页内容的函数. 表5.3.1 函数名

Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情

Java爬虫爬取 天猫 淘宝 京东 搜索页和 商品详情 先识别商品url,区分平台提取商品编号,再根据平台带着商品编号爬取数据. 1.导包 <!-- 爬虫相关Jar包依赖 --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi-ooxml</artifactId> <version>3.10-FINAL</version> </

垂直爬虫爬取分页数据

为了爬取全部详情页,一般从列表页开始多线程并发爬取,并发线程数受网络环境(一般表现为超时)和服务器性能影响(一般表现为http响应500). 1.第一页作为抓取入口url,解析出详情页url及其他分页url,详情页优先爬,避免缓存的url过多: 2.查看总共多少页(如果分页中没有总共多少页,通过总记录数/每页记录数计算出多少页),爬取过程不解析分页url,一次性添加全部分页url, 当然也可以在爬第一页的时候添加全部分页,每爬完一页解析出详情页url,详情页优先爬: 3.有些网站在详情页提供上一

如何防止网站被爬虫爬取的几种办法

如何防止网站被爬虫爬取的几种办法 小 中 大 chen 2013-10-08 23:26 Linux 547 次浏览 抢沙发 今天想对一个问题进行分析和讨论,就是关于爬虫对网站页面爬取的问题,有些网站通过爬虫去采集其它的网站页面信息作为己用,大量的爬取行为会对web服务器有比较性能有影响,主要的表现就是会变得很慢. 对于如何防止网站被爬取,我想从以下几种方法去分析: 1.基于程序本身去防止爬取:作为爬虫程序,爬取行为是对页面的源文件爬取,如爬取静态页面的html代码,可以用jquery去模仿写h

Python爬虫爬取一篇韩寒新浪博客

网上看到大神对Python爬虫爬到非常多实用的信息,认为非常厉害.突然对想学Python爬虫,尽管自己没学过Python.但在网上找了一些资料看了一下,看到爬取韩寒新浪博客的视频.共三集,第一节讲爬取一篇博客,第二节讲爬取一页博客.第三集讲爬取所有博客. 看了视频.也留下了代码. 爬虫第一步:查看网页源码: 第一篇博客的代码为蓝底的部分<a title="" target="_blank" href="http://blog.sina.com.cn/

Python编写网页爬虫爬取oj上的代码信息

OJ升级,代码可能会丢失. 所以要事先备份. 一开始傻傻的复制粘贴, 后来实在不能忍, 得益于大潇的启发和聪神的原始代码, 网页爬虫走起! 已经有段时间没看Python, 这次网页爬虫的原始代码是 python2.7版本, 试了一下修改到3.0版本, 要做很多包的更替,感觉比较烦,所以索性就在这个2.7版本上完善了. 首先观赏一下原始代码,我给加了一些注释: # -*- coding: cp936 -*- import urllib2 import urllib import re import

python爬虫--爬取某网站电影下载地址

前言:因为自己还是python世界的一名小学生,还有很多路要走,所以本文以目的为向导,达到目的即可,对于那些我自己都没弄懂的原理,不做去做过多解释,以免误人子弟,大家可以网上搜索. 友情提示:本代码用到的网址仅供交流学习使用,如有不妥,请联系删除. 背景:自己有台电脑要给老爸用,老爷子喜欢看一些大片,但是家里网络环境不好,就想批量下载一些存到电脑里.但是目前大部分的网站都是这样的, 需要一个个地点进去,才能看到下载地址 如果我要下载100部电影,那肯定手都要点断了,于是便想把这些地址给爬取出来,