官方数据:起点中文网越来越火爆了,我利用Python直接把整站数据采集完毕

优采云 发布时间: 2020-09-05 04:05

  起点中文网站越来越受欢迎,我使用Python直接完成整个网站数据采集

  

  注意:PEP 20是著名的Python Zen。

  警告:非专业使用其他HTTP库可能导致危险的副作用,包括:安全缺陷,冗余代码综合症,重塑车轮综合症,文件咬伤综合症,沮丧,头痛甚至死亡。

  2.功能

  据说请求功能强大,那么让我们看一下请求的功能:

  请求完全满足当今网络的需求。请求支持Python 2. 6- 2. 7和3. 3- 3. 7,并且可以在PyPy下完美运行

  三、安装请求

  pip安装请求

  如果是pip3,则使用

  pip3安装请求

  如果您使用水蟒,则可以

  conda安装请求

  如果您不想使用命令行,则可以在pycharm中下载类似的库

  

  四、采集器进程

  下图是Brother Pig先前工作总结的项目开发过程。它很详细。确实有必要如此详细地开发大型项目。否则,项目将失败或修改需求。程序员有可能牺牲自己的生命。 。

  

  靠近主题,向所有人显示项目的开发过程将导致爬网数据的过程:

  确定需要爬网的Web浏览器。检查数据源(静态网页或动态加载)以查找加载数据URL(例如分页)代码模拟请求以爬网数据的参数规律

  起点中文网成立于2002年5月。它是中国最大的文学阅读和写作平台之一。它是领先的原创文学门户网站,属于China-Reading集团下最大的综合数字内容平台。

  总体思路分为三个步骤:

  1.分析网页结构,使用xpath表达式对所有文章名称和链接进行爬网,然后按文章名称生成文件夹。

  import requests

from urllib import request

from lxml import etree

import os

header = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'}

class Spider(object):

def start_request(self):

url = 'https://www.qidian.com/all'

req = request.Request(url,headers=header)

html= request.urlopen(req).read().decode('utf-8')

html=etree.HTML(html)

bigtit_list=html.xpath('//div[@class="book-mid-info"]/h4/a/text()') ##爬取所有的文章名字

bigsrc_list = html.xpath('//div[@class="book-mid-info"]/h4/a/@href')

print(bigtit_list)

print(bigsrc_list)

for bigtit,bigsrc in zip(bigtit_list,bigsrc_list):

if os.path.exists(bigtit)==False:

os.mkdir(bigtit)

self.file_data(bigsrc,bigtit)

  2.使用文章链接抓取每个章节的名称和链接

   def file_data(self,bigsrc,bigtit): #详情页

url="http:"+bigsrc

req = request.Request(url, headers=header)

html = request.urlopen(req).read().decode('utf-8')

html = etree.HTML(html)

print(html)

Lit_tit_list = html.xpath('//ul[@class="cf"]/li/a/text()') #爬取每个章节名字

Lit_href_list = html.xpath('//ul[@class="cf"]/li/a/@href') #每个章节链接

for tit,src in zip(Lit_tit_list,Lit_href_list):

self.finally_file(tit,src,bigtit)

  3.使用每个章节的链接来生成带有章节名称的txt文件,并将其保存到每个文章文件夹中。

   def finally_file(self,tit,src,bigtit):

url = "http:" + src

req = request.Request(url, headers=header)

html = request.urlopen(req).read().decode('utf-8')

html = etree.HTML(html)

text_list = html.xpath('//div[@class="read-content j_readContent"]/p/text()')

text = "\n".join(text_list)

file_name = bigtit + "\\" + tit + ".txt"

print("正在抓取文章:" + file_name)

with open(file_name, 'a', encoding="utf-8") as f:

f.write(text)

spider=Spider()

spider.start_request()

  成功!

  

  生成的文件夹如下所示:

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线