分享

python学习(二)爬虫

 二楼202 2019-10-17

一:获取小说页面

所需模块

import requests #获取网络连接

目标小说网站:http://m.

获取页面

r = requests.get('http://m.',params=re_header)

requests的高级特性

这里的re_header是HTTP请求头,用来模仿浏览器访问,避免被网站发现
获取方法如下
1,用chrome打开小说网站
2,按F12进入开发者模式或者 鼠标右键->检查 进入开发者模式
3,点击network
4,如图:
示例1


注:request-header里的并不需要全部复制,只要一部分就可以,具体的自己试一试

然后我们获取到的网页就会保存在r里面
示例2


这里还要设置编码,requests默认为utf-8,我们的目标网站的编码是gbk
示例3


打印出来的是网站的源代码,我们要获得小说章节内容,只需要获得文字就行了。
所以我们得把网站源码里得代码部分全部剔除掉。

二:剔除源码中的代码部分

所需模块:

from bs4 import BeautifulSoup

极客学院|BeautifulSoup的用法

这个模块可以根据网页内的标签来获取指定的内容
如:
示例4


通过select方法选取html页面的title标签,获得的返回是一个列表,如图:
示例5


再用text属性来获取标签内的文字:
示例6


掌握了这些,接下来获取章节内容就非常简单了

三:获取章节内容

我们先随便打开一个章节的页面,然后按F12进入开发者模式,如图:
示例7


先点击左上的鼠标图标,让后再点击要选择的内容,与之对应的标签就会在源码里高亮显示出来

这里我们可以看到章节内容在 id为nr1的标签下(select方法也可以根据id和类名来进行选择),如图:
示例8


获取到章节内容后,将其保存到一个变量中去方便进行文件写入
示例9


四:写入文件

所需模块:

import os

os模块是python中用来进行文件读写的,详细的可以自己去了解一下python3|菜鸟教程,这里只要用到open()函数

open('要打开的文件名,没有回自动创建','打开模式,我用的是wb')
#wb模式为:以读写方式打开文件,若已存在则覆盖原来的文件

如图:
示例10


这里最好加一个括号,否则可能出现意想不到的错误
示例11


生成的文件就在当前脚本所在的目录下,这里我打错了格式,其实应该是txt格式的

完整代码如下:

import requests
import os
from bs4 import BeautifulSoup

url = 'http://m./book_1/5.html'
re_header = {
'Referer':'http://m./chapters_1/',
'Upgrade-Insecure-Requests':'1',
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Mobile Safari/537.36'
}

#获取网页
r = requests.get(url,params=re_header)

#更改编码
r.encoding = 'gbk'

#获得BeautifulSoup对象
soup = BeautifulSoup(r.text,"html.parser")

#获得章节内容
chapter_content = soup.select('#nr1')[0].text

#打开/创建文件
fo = open('1.txt','wb')

fo.write((chapter_content).encode('utf-8'))

print(chapter_content)

#使用完后关闭文件
fo.close()

print('下载成功')

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多