首页 > 编程语言 > 详细

线程池 爬取一本小说

时间:2019-05-16 19:30:48      阅读:224      评论:0      收藏:0      [点我收藏+]

#  本例子 开100线程

import requests
from lxml import etree
from multiprocessing.dummy import Pool  # 线程类
import time

start  = time.time()

url = "https://www.biquge.info/41_41486/"
headers = {
    "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}
page = requests.get(url=url, headers=headers)
page.encoding = utf-8
page_text = page.text
tree = etree.HTML(page_text)
book_name = tree.xpath("//div[@id=‘info‘]/h1/text()")[0]  #小说书名
author = tree.xpath("//div[@id=‘info‘]/p[1]/text()")[0].replace( , ‘‘).strip()
book_type = tree.xpath("//div[@id=‘info‘]/p[2]/text()")[0].replace( , ‘‘)
last_update_time = tree.xpath("//div[@id=‘info‘]/p[3]/text()")[0].replace( , ‘‘)
book_info = tree.xpath("//div[@id=‘intro‘]/p[1]/text()")[0].replace( , ‘‘)
info = book_name + \n + author + \n + book_type + \n + last_update_time + \n + book_info + \n
dd_list = tree.xpath("//div[@id=‘list‘]/dl/dd/a/@href")


def func(a):
    res = requests.get(url=f"https://www.biquge.info/41_41486/{a}",headers=headers)
    res.encoding = utf-8
    res = res.text
    tree1 = etree.HTML(res)
    content_data = tree1.xpath(//div[@id="content"]//text())
    name = tree1.xpath(//*[@id="wrapper"]/div[4]/div/div[2]/h1/text())[0]  #小说章节
    content =      + \n.join(content_data).lstrip()  #小说内容
    return name,content 


f = open(f./{book_name}.txt,w,encoding=utf-8)
def write_xs(lst):
    for i in lst:
        print(i[0])
        f.write(i[0]+\n+i[1])
    f.close()

pool = Pool(100)  #线程池
lst = pool.map(func,dd_list)  #线程池访问页面
write_xs(lst)  #调用写的函数


print(time.time()-start)
print(结束)

 

import requests
from lxml import etree
from multiprocessing.dummy import Pool # 线程
import time

start = time.time()

url = "https://www.biquge.info/41_41486/"
headers = {
"user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36"
}
page = requests.get(url=url, headers=headers)
page.encoding = ‘utf-8‘
page_text = page.text
tree = etree.HTML(page_text)
book_name = tree.xpath("//div[@id=‘info‘]/h1/text()")[0]
author = tree.xpath("//div[@id=‘info‘]/p[1]/text()")[0].replace(‘ ‘, ‘‘).strip()
book_type = tree.xpath("//div[@id=‘info‘]/p[2]/text()")[0].replace(‘ ‘, ‘‘)
last_update_time = tree.xpath("//div[@id=‘info‘]/p[3]/text()")[0].replace(‘ ‘, ‘‘)
book_info = tree.xpath("//div[@id=‘intro‘]/p[1]/text()")[0].replace(‘ ‘, ‘‘)
info = book_name + \n+ author + \n+ book_type + \n+ last_update_time + \n+ book_info + \n
dd_list = tree.xpath("//div[@id=‘list‘]/dl/dd/a/@href")


def func(a):
res = requests.get(url=f"https://www.biquge.info/41_41486/{a}",headers=headers)
res.encoding = ‘utf-8‘
res = res.text
tree1 = etree.HTML(res)
content_data = tree1.xpath(‘//div[@id="content"]//text()‘)
name = tree1.xpath(‘//*[@id="wrapper"]/div[4]/div/div[2]/h1/text()‘)[0]
content = ‘ ‘ + \n.join(content_data).lstrip()
return name,content


f = open(f‘./{book_name}.txt‘,‘w‘,encoding=‘utf-8‘)
def write_xs(lst):
for i in lst:
print(i[0])
f.write(i[0]+\n+i[1])
f.close()

pool = Pool(100)
lst = pool.map(func,dd_list)
write_xs(lst)


print(time.time()-start)
print(结束)

线程池 爬取一本小说

原文:https://www.cnblogs.com/zhangchen-sx/p/10877343.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!