爬取某网站小说

这段代码是在网上抄录的,原代码如果直接使用抓标题会出现乱码,我给修正好了(加了一句”r.encoding = r.apparent_encoding”让requests使用网页原来的编码)。代码很简单,留下来主要是我看上那个小说站的内容了,可以用来做SEO。。。SO。。你懂的。如果想加工一下不用每次都到代码里去修改地址也很简单,再如果想用这个代码爬一些有AJAX的,加一个selenium模块就可以了。

#coding:utf-8
import requests
from lxml import etree
 
url = 'http://m.18xs.org/book_2181/all.html'  # 把需要爬的小说的目录链接替换即可
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537'
}
 
r = requests.get(url, headers=headers)
r.encoding = r.apparent_encoding              # 加这句代码让程序使用网页编码格式,否则下面获取出来的文章标题会出现乱码
html_tree = etree.HTML(r.text)
articeTittle = html_tree.xpath('//*[@id="top"]/span/text()')[0].strip()
url_list = html_tree.xpath('//div[@id="chapterlist"]/p/a/@href')
url_list_new = []
for i in url_list[1:-1]:
    a = 'http://m.18xs.org/' + i
    url_list_new.append(a)
 
# print(url_list_new)
 
def get_text(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.108 Safari/537'
    }
    r = requests.get(url, headers=headers)
    htree = etree.HTML(r.content)
    text = htree.xpath('//div[@id="chaptercontent"]/text()')
    txt = ''
    for i in text:
        i = ''.join(i.split())
        txt = txt + i + '\n'
    return txt
 
for i in url_list_new:
    t = get_text(i)
    with open(articeTittle+'.txt', 'a+', encoding='utf-8') as fp:
        fp.write(t)

您可能会喜欢

发表评论

电子邮件地址不会被公开。 必填项已用*标注

在这输入验证码 : *

Reload Image