学100种基本爬虫项目--模拟浏览器发送请求并解析数据之爬取单章小说内容

首先先附上整体代码

# _*_coding :utf-8 _*_
# @time 2023/7/14 20:24
# @Author :volcano
# @File 爬取小说
# @Proect :workspace
#模拟浏览器对服务器发送请求
#导入请求模块
import requests
#导入解析模块
import parsel
url='https://www.bbiquge.net/book/133303/56520853.html'#用自定义的变量接收字符串的数据内容
response=requests.get(url)
response.encoding='gbk'
#一种编译格式
# print(response.text)

selector=parsel.Selector(response.text)
#h1::text提取h1标签当中的文本 get的意思是获得的意思
title=selector.css('#main > h1::text').get()
title_2=selector.xpath('//*[@id="main"]/h1/text()').get()
print(title)
contest=selector.css('#content::text').getall()
string="\n".join(contest)
print(string)
with open(r'D:\爬取文本存放位置\一百种爬虫方式\单篇小说的提取'+title+'.txt',mode='w', encoding='utf-8') as f:
    f.write(title)
    f.write(string)

效果图:

 

在进行网络爬虫时,我们经常需要模拟浏览器发送请求,并从服务器获取到数据。本文将介绍如何使用Python中的requests模块发送请求,并使用解析库解析返回的数据。同时,我们还将了解到在数据解析过程中使用CSS选择器和XPath的情况,以及在无法获取标签时使用正则表达式的情况。

首先,我们导入requests模块,这是一个用于发送HTTP请求的强大工具。然后,我们指定要请求的URL,并使用requests.get()方法发送GET请求获取服务器的响应。

import requests

url = 'https://www.bbiquge.net/book/59265/57967084.html'
response = requests.get(url)
print(response.text)

上述代码中,我们通过response.text打印出了服务器返回的数据内容。

接下来,我们需要对获取到的数据进行解析。常用的解析库有cssselect、lxml、parsel等,这些库可以使用CSS选择器或XPath来提取数据。

举个例子,假设我们想要提取文章的标题,可以使用CSS选择器或XPath进行定位和提取。

使用CSS选择器的示例代码如下:

import requests
import parsel

url = 'https://www.bbiquge.net/book/59265/57967084.html'
response = requests.get(url)

selector = parsel.Selector(response.text)
title = selector.css('#main > h1::text').get()
print(title)

上述代码中,我们使用parsel库解析了获取到的HTML文本,并通过CSS选择器定位到标题所在的h1标签,然后使用.get()方法提取出标题的文本内容。

如果你更习惯使用XPath,可以使用类似下面的代码:

import requests
import parsel

url = 'https://www.bbiquge.net/book/59265/57967084.html'
response = requests.get(url)

selector = parsel.Selector(response.text)
title = selector.xpath('//*[@id="main"]/h1/text()').get()
print(title)

注意,使用XPath时,我们需要在提取路径后加上.get()以获取文本内容。

另外,我们还可以通过CSS选择器或XPath来提取其他标签中的数据。

接下来,我们可以将提取到的数据保存到本地文件中。使用open()函数打开文件,并使用write()方法将数据写入文件中。

下面是保存文本内容的示例代码:

import requests
import parsel

url = 'https://www.bbiquge.net/book/59265/57967084.html'
response = requests.get(url)

selector = parsel.Selector(response.text)
title = selector.css('#main > h1::text').get()
contest = selector.css('#content::text').getall()

string = "\n".join(contest)

with open(title + '.txt', mode='w', encoding='utf-8') as f:
    f.write(title)
    f.write(string)

上述代码中,我们使用open()函数创建一个文件,将标题和内容写入文件中,并以UTF-8编码保存。在保存内容时,我们使用join()方法将列表中的每一行内容用换行符连接起来,实现分行保存。

需要注意的是,使用open()函数打开文件时,可以指定文件保存的路径。

with open(r'D:\爬取文本存放位置\一百种爬虫方式\单篇小说的提取'+title+'.txt',mode='w', encoding='utf-8') as f:

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Volcanoforever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值