importrequests_html
defmakestr(b):
num=str(b)
returnnum
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"]
foriinrange(2,4):
new_url=url+'/page/'+str(i)
urllist.append(new_url)
print(urllist)
foriinrange(len(urllist)):
lianjie=urllist.pop()
r=session.get(lianjie)
forbinrange(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)
#######
delb
forlinknuminrange(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)
forainrange(len(res)):
zifu_str=res.pop(0)
ifa==0:
bt=res_bt.pop()
wenjian_name=bt+'.txt'
zifu_str=bt+'\n'+zifu_str
withopen(wenjian_name,'a',encoding='utf-8')asfile_object:
file_object.write(zifu_str+'\n')
比较难的其实是那个,一开始获取链接错了,我把链接储存起来然后pop出来的是xpath。。。。
然后后面是一个很蠢的问题。。'str' object is not callable
一直报错这个,然后我改了一堆一堆的,发现都没问题,随便一看发现我后面的文件写入,变量名为str。。。。。
在接下来就毫无难度了
不过我这个是只能爬取那些短篇小说的爬虫,而非那种好多章的,不过只要在一个列表页就行了,但是由于一些特殊原因,所以不准备把小说网址放出来,其实明白的人都懂,哈哈。
如果有什么疑问,可以在评论区留言,我会在看到的第一时间进行回复的。