python xpath爬取小说的进阶版,不过其实说是进阶,还是那些东西,只不过加了一个范围获取,指前只能是输入网址,而且必须是小说的正页内容才行,现在加了一个只需要列表页就能获取该列表的所有小说了。而且通过python,实现了只需要输入列表页的长度,就能获取所有的文章。

import requests_html
def makestr(b):
num=str(b)

return num

session=requests_html.HTMLSession()

url="https"

biaoti_xpath='/html/body/div[1]/div/div[1]/main/article/div/header/h1/text()'

wenben_xpath='/html/body/div[1]/div/div[1]/main/article/div/div/p/text()'

lianjiexpath_list=[]

lianjie_list=[]

links=[]

urllist=["https"]

for i in range(2,4):

new_url=url+'/page/'+str(i)

urllist.append(new_url)

print(urllist)

for i in range(len(urllist)):

lianjie=urllist.pop()

r=session.get(lianjie)

for b in range(1,13):

num=makestr(b)

lianjie_xpath='/html/body/div[1]/div/div[1]/main/article['+num+']/div/header/h2/a/@href'

#lianjiexpath_list.append(lianjie_xpath)

links.append(r.html.xpath(lianjie_xpath))

#######

#foriinrange(len(lianjiexpath_list)):#将链接储存在一个列表里

#lianjie_xpath=lianjiexpath_list.pop()

##print(r.html.xpath(lianjie_xpath).pop())

#

#lianjie_list.append(r.html.xpath(lianjie_xpath))

#print(lianjie_list)

#######

del b

for l in range(len(links)):

link=links.pop()

link=link.pop()

r=session.get(link)

res_bt=r.html.xpath(biaoti_xpath)

res=r.html.xpath(wenben_xpath)

for a in range(len(res)):

zifu_str=res.pop(0)

if a==0:

bt=res_bt.pop()

wenjian_name=bt+'.txt'

zifu_str=bt+'\n'+zifu_str

with open(wenjian_name,'a',encoding='utf-8')as file_object:

file_object.write(zifu_str+'\n')

python 爬取小说进阶
比较难的其实是那个,一开始获取链接错了,我把链接储存起来然后pop出来的是xpath。然后后面是一个很蠢的问题。'str' object is not callable一直报错这个,然后我改了一堆一堆的,发现都没问题,随便一看发现我后面的文件写入,变量名为str。
在接下来就毫无难度了
不过我这个是只能爬取那些短篇小说的爬虫,而非那种好多章的,不过只要在一个列表页就行了,但是由于一些特殊原因,所以不准备把小说网址放出来,其实明白的人都懂,哈哈。

最后修改:2021 年 04 月 19 日 03 : 02 PM
如果觉得我的文章对你有用,请随意赞赏