# -*- coding: utf-8 -*-
import re
import requests
import time
header = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'}
f = open('斗破苍穹.txt', 'a+')
def get_info(url):
response = requests.get(url, headers = header)
if response.status_code == 200:
contents = re.findall('<p>(.*?)</p>', response.content.decode('utf-8'), re.S)
for content in contents:
f.write(' ' + content + '\n')
else:
pass
if __name__ == '__main__':
for i in range(1, 1665):
url = 'http://www.doupoxs.com/doupocangqiong/' + str(i) + '.html'
get_info(url)
time.sleep(1)
f.close()
代码分析
(1)1-5行,导入必要的第三方包;给定请求头header;以“追加”的方式新建文本文档,命名为’斗破苍穹.txt’;
(2)11-18行,定义get_info()函数,获取网页信息。若网页访问的状态码为200,表示正常访问,则用re模块获取文本信息,对 response.content.decode(‘utf-8’)这个类进行findall操作,寻找格式为
(.*?)
的所有文本信息;re.S表示换行匹配。最后,将信息写入文件;若状态码不是200,则表示网页不可访问,例如404Forbidden等。则直接pass,不进行任何操作;
(3)20-25行,定义主程序入口;对1665个可能有文本信息的页面执行get_info()函数;最后用time.sleep()做假装的睡眠,模仿浏览器访问。