python爬虫urllib与BeautifulSoup(一)

小白一枚,记录自己学习的过程。
今日的目的是爬取起点小说网的一章小说。
首先我们把需要的包导入

from bs4 import BeautifulSoup
import urllib.request

为了防止反爬虫,还是得先模拟浏览器访问该网站。
模拟浏览器查看另一篇博。

  req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36')

urllib中包括了四个模块,包括
urllib.request, urllib.error, urllib.parse, urllib.robotparser

urllib.request可以用来发送request和获取request的结果
urllib.error包含了urllib.request产生的异常
urllib.parse用来解析和处理URL
urllib.robotparse用来解析页面的robots.txt文件

urllib.request有一个 urlopen() 方法可以实现最基本的请求发起,但这几个简单的参数并不足以构建一个完整的请求,如果请求中需要加入 headers 等信息,我们就可以利用更强大的 Request 类来构建一个请求。

url='https://read.qidian.com/chapter/0Xh7EIK1E5IJiWg6PYdjVg2/5VygD8s_e2Vp4rPq4Fd4KQ2'
    req=urllib.request.Request(url)
    req.add_header('User-Agent','Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36')
    data=urllib.request.urlopen(req)
    str=data.read()

到此我们已经抓取到了该网页的源代码,接下来把多余的标签去掉即可,只保留其中的文字内容。
在这里插入图片描述
我们通过对该网站的源代码观察,所有的小说内容都在p标签内,而p标签在div标签内,所以只要定位到该标签即可。
我们通过class对div进行区分

soup=BeautifulSoup(str,'html.parser')
content=soup.find("div",class_="read-content j_readContent").text

最后通过输出即可。
完整代码如下

import urllib.request
from bs4 import BeautifulSoup
def demo(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/70.0.3538.77 Safari/537.36')
    data=urllib.request.urlopen(req)
    str=data.read()

    soup=BeautifulSoup(str,'html.parser')
    content=soup.find("div",class_="read-content j_readContent").text
    f=open("xs",'w')
    f.write(content)
    f.close()
    print(content)

if __name__ == '__main__':
    url = 'https://read.qidian.com/chapter/0Xh7EIK1E5IJiWg6PYdjVg2/5VygD8s_e2Vp4rPq4Fd4KQ2'
    demo(url)

在这里插入图片描述

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值