产品目录

序言

已经开始

预测(x0)

预测(x1)

预测(x2)

预测(x3)

预测(x4)

完备的标识符

我有话说

序言

他们好我叫悲悯,这是我的第二卷控制技术昌明(首篇讲诉的是他们的历经),已连续四天预览了,会花两半小时写出两个两栖作战事例,我也是Longpr,非常感谢他们对我的全力支持。

那时咱要做的是借助Pythonbanlist整座中文网站上的大部份短篇小说文本,只不过在倾城里头,收集甚么文本显然毫无意义,最重要的是他们能自学到我的预测路子,授人以鱼比不上少击众。

已经开始

难道是要收集整站统计数据,所以他们步入最终目标中文网站,点选全数经典作品。

自动草稿

预测(x0)

第二步滑鼠呵呵查阅中文网站源标识符,看里头与否有咱须要的书柜根源文档门牌号(总之是看根源文档门牌号,即使一两本书的文本所以大,接着两本有所以多两本书,的确不可能将文本全数在源标识符中)。

自动草稿

可以看到我在元素中可以找到书的名字和介绍,接着关键的是两个跳转的网址,这个网址很关键,即使咱点选这个链接后他会跳到单本短篇小说中。

自动草稿

而单本短篇小说里头势必会有章节分类,而他们要做的的确是须要把每本短篇小说的章节名字也收集下来。

最终的目的就是,每本短篇小说为两个文档夹,以书的名字命名,接着文档夹内保存大部份章节,每两个章节为两个txt文档,没两个章节名与txt文档名对应。

预测(x1)

反转,切记不要以element作为源标识符去考虑问题!!element可能将是浏览器执行了一些JavaScript后所展现的源标识符,与服务器传给浏览器的源标识符是有所不同的。

所以咱还是须要在源标识符中找一找与否有跳转链接和书名。

自动草稿

好吧,源标识符中也是有的。不过你们不能大意,一定要查阅源标识符中与否有,element代表不了源标识符。

所以先收集呵呵第两本的书名和跳转链接

抓取第两本的大部份书籍名字,书籍入口到了书籍入口后,抓取章节名字,章节链接(文字文本)保存importrequestsfromlxml import etreeimportosurl=https://www.qidian.com/allreq=requests.get(url).texthtml=etree.HTML(req)booknames=html.xpath(//div[@class=”book-mid-info”]/h4/a/text())tzurls=html.xpath(//div[@class=”book-mid-info”]/h4/a/@href)forbookname, tzurl in zip(booknames, tzurls):ifnot os.path.exists(bookname):if os.path.exists(bookname) == False:os.mkdir(bookname)创建文档夹

这里对应着咱的路子,每收集到两个书名就给它单独创建两个文档夹。

自动草稿

完全没问题,到这里咱已经完成第二步了。

预测(x2)

所以接下来就是去模拟请求咱收集到的书柜产品目录的跳转链接,接着同样的方法去收集到章节名与章节文本的跳转链接了。

自动草稿

同样的你们他们查阅下源标识符,统计数据也是在里头的。

自动草稿

那就接着写标识符咯

importrequests
from lxmlimportetreeimportos
url = https://www.qidian.com/allreq = requests.get(url).text
html = etree.HTML(req)
booknames = html.xpath(//div[@class=”book-mid-info”]/h4/a/text())tzurls = html.xpath(//div[@class=”book-mid-info”]/h4/a/@href)forbookname, tzurlinzip(booknames, tzurls):ifnot os.path.exists(bookname):ifos.path.exists(bookname) ==False:
os.mkdir(bookname) 创建文档夹
req2 = requests.get(“http:” tzurl).text
html1 = etree.HTML(req2)
zjurls = html1.xpath(//ul[@class=”cf”]/li/a/@href)zjnames = html1.xpath(//ul[@class=”cf”]/li/a/text())forzjurl, zjnameinzip(zjurls, zjnames):print(zjname \n zjurl)

效果图:

自动草稿

预测(x3)

知道这里为甚么没有去把章节名字命名的txt文档保存在文档夹内吗?

即使咱还没有获取到章节的文本呀,是不是须要先把章节文本写到章节的txt里头,接着再保存在文档夹内?

总之这句解释是为了照顾新手。

所以接下来收集章节文本,方法甚么的不讲了, 一模一样的,章节文本同样在源标识符中如上上图所示。

自动草稿

每两个标签只保存一行文本,所以就须要用到把收集到的大部份文本都组合起来,并用换行符隔开,尽量保持文章格式。

标识符走起:

importrequests
from lxmlimportetreeimportos
url = https://www.qidian.com/allreq = requests.get(url).text
html = etree.HTML(req)
booknames = html.xpath(//div[@class=”book-mid-info”]/h4/a/text())tzurls = html.xpath(//div[@class=”book-mid-info”]/h4/a/@href)forbookname, tzurlinzip(booknames, tzurls):ifnot os.path.exists(bookname):ifos.path.exists(bookname) ==False:
os.mkdir(bookname) 创建文档夹
req2 = requests.get(“http:” tzurl).text
html1 = etree.HTML(req2)
zjurls = html1.xpath(//ul[@class=”cf”]/li/a/@href)zjnames = html1.xpath(//ul[@class=”cf”]/li/a/text())forzjurl, zjnameinzip(zjurls, zjnames):print(zjname \n zjurl)
req3 = requests.get(http: zjurl).text
html2 = etree.HTML(req3)
nrs = html2.xpath(//div[@class=”read-content j_readContent”]/p/text()) 分散式文本nr = \n.join(nrs)
file_name = bookname “\\” zjname “.txt”print(“正在抓取文章:” file_name)
withopen(file_name, a, encoding=“utf-8”)asf:
f.write(nr)

效果图:

自动草稿

这里要说明呵呵,咱还只是抓取了第两本的统计数据。所以如何抓取整站的统计数据呢?

预测(x4)

一般稍微有经验的都知道一点,就是当他们翻页的时候,中文网站的url会发生变化,页码一般就是在url上面。

自动草稿

自动草稿

构建个for循环把页码数变为两个变量即可,无需多言,直接上最终的完备标识符,标识符仅供参考,你们最终可以他们去修改效果。

完备的标识符

importsysimportrequests
from lxmlimportetreeimportosforiinrange(sys.maxsize):
url = fhttps://www.qidian.com/all/page{i}/req = requests.get(url).text
html = etree.HTML(req)
booknames = html.xpath(//div[@class=”book-mid-info”]/h4/a/text())tzurls = html.xpath(//div[@class=”book-mid-info”]/h4/a/@href)forbookname, tzurlinzip(booknames, tzurls):ifnot os.path.exists(bookname):ifos.path.exists(bookname) ==False:
os.mkdir(bookname) 创建文档夹
req2 = requests.get(“http:” tzurl).text
html1 = etree.HTML(req2)
zjurls = html1.xpath(//ul[@class=”cf”]/li/a/@href)zjnames = html1.xpath(//ul[@class=”cf”]/li/a/text())forzjurl, zjnameinzip(zjurls, zjnames):print(zjname \n zjurl)
req3 = requests.get(http: zjurl).text
html2 = etree.HTML(req3)
nrs = html2.xpath(//div[@class=”read-content j_readContent”]/p/text()) 分散式文本nr = \n.join(nrs)
file_name = bookname “\\” zjname “.txt”print(“正在抓取文章:” file_name)
withopen(file_name, a, encoding=“utf-8”)asf:
f.write(nr)

1.本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!