|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
自从上一次写了爬取一本小说的爬虫,现在要爬取整个网站的小说,并按书名保存成一个txt文件,但在for循环上遇到的一些问题,想请教一下各位大神:
0. 为什么for循环在主函数内只会显示第一个拼接的url,而其他函数内却可以显示全部拼接成功的url
1. 爬取整个网站应该不会用到 Scrapy之类的吧?
代码如下
- import re,urllib,os,html
- import requests as req
- def url_open(url):#网页打开函数,以防被禁
- req = urllib.request.Request(url)
- req.add_header('User-Agent',"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.75 Safari/537.36")
- response = urllib.request.urlopen(url)
- html = response.read()
- return html
- def get_txt_url(url):#获取小说的url
- html = url_open(url).decode('gbk')
- reg = r'<li><a href="/(.*?)" title=".*?" target="_top">.*?</a></li>'
- book_url = re.findall(reg, html,re.S)
- #print(book_url)
- for i in book_url:
- url_1 = url + i#拼接小说的url
- return url_1
- def get_txt_book(txt_url):
- html = url_open(txt_url).decode('gbk')
- reg = r'<li><a href="/.*?/(.*?)">.*?</a></li>'
- char = re.findall(reg,html,re.S)
- for a in char:
- url_z = txt_url+a
- return url_z
- def gulong_txt(folder='txtbook',page=1):#主函数
- os.chdir(folder)
- url = 'http://www.gulongwang.com/'
- txt_url = get_txt_url(url)#获取小说的url
- print(txt_url)
- txt_book =get_txt_book(txt_url)#获取小说正文url
- print(txt_book)
复制代码
本帖最后由 wyp02033 于 2017-11-10 14:47 编辑
你的for循环在执行完第一循环后就返回退出了,所以你的循环实际上只执行了一次。
如果要获取全部的链接,你需要用一个列表来存储,然后返回整个列表。
|
|