用python爬取小说。(id定位)

        直接上程序,我就说怎么用就好了。

import requests
from bs4 import BeautifulSoup
import re

h={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0'}

u=input('小说网址:')
b=input('半节点:')
w=input('文本id:')
x=input('下一章id:')
n=input('书名:')
c=int(input('剩余章数:'))
q=len(input('清除末尾字数:'))

for i in range(c):
    r=requests.get(u,headers=h)
    s=BeautifulSoup(r.text,'html.parser')
    t=s.select('#'+w)[0].text[:-q]
    t=re.sub("  ","\n  ",t)
    t = t.replace('\ufffd', '()')#替换
    u='https://m.hafuklxt.cc/'+s.select("#"+x)[0].get('href')
    with open(n+'.txt','a') as f:
        f.write(t)
    print(i)

print('下载完成')

        使用时一行一行输入信息,具体上面有写,下面是示范。

目标:我不是戏神

运行程序

小说网址:https://m.hafuklxt.cc/chapter/15543941/67855658.html
半节点:https://m.hafuklxt.cc/
文本id:chaptercontent
下一章id:pb_next
书名:我不是戏神
剩余章数:700
清除末尾字数:111111111111111111111111111111111#有32个字就行

        其实本质上就是下面这个程序

import requests
from bs4 import BeautifulSoup
import re
u='https://m.hafuklxt.cc/chapter/15543941/67855658.html'
h={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36 Edg/121.0.0.0'}
for i in range(30):
    r=requests.get(u,headers=h)
    s=BeautifulSoup(r.text,'html.parser')
    t=s.select('#chaptercontent')[0].text[:-32]
    t=re.sub("  ","\n  ",t)
    t = t.replace('\ufffd', '()')#替换
    u='https://m.hafuklxt.cc/'+s.select("#pb_next")[0].get('href')
    with open('cs.txt','a') as f:
        f.write(t)
    print(i)

        id用f12开发者工具找,如图所示。

        本程序只能用id定位,当然,改一下就能用其他的定位方法了,记住文件是追加,所以如果有同名文件或者程序重复运行的话内容就会重复,当然,把网址填成断的那一章就行,比如说从100章更新到110章,你已经爬了100章了,网址就用101章的就行了,对了要在同名文件夹下,不然你就要自己改程序写入文本的位置。

        对了,由于处理特殊字符的方式是直接消灭,所以有些地方可能有空白,但应该不怎么影响阅读体验吧,主要是我只会替换特殊字符。

        ok,本篇文章结束了,希望能帮到你。

  • 8
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以使用 Python 的 `urllib` 模块中的 `urlopen()` 函数来打开本地 HTML 文件。例如: ``` from urllib.request import urlopen # 打开本地文件 with urlopen('file:///path/to/local/file.html') as f: # 读取文件内容并解码 html = f.read().decode('utf-8') ``` 你还可以使用 Python 的 `open()` 函数来打开本地文件。例如: ``` # 打开本地文件 with open('/path/to/local/file.html', 'r', encoding='utf-8') as f: # 读取文件内容 html = f.read() ``` 然后,你可以使用 Python 的 `BeautifulSoup` 库来解析 HTML。例如: ``` from bs4 import BeautifulSoup soup = BeautifulSoup(html, 'html.parser') ``` 这样就可以在 `soup` 对象中使用 BeautifulSoup 的方法来解析 HTML 了。 ### 回答2: 要使用Python爬取本地HTML文件,可以按照以下步骤进行操作: 1. 首先,确保你已经有一个本地HTML文件,可以在计算机的某个目录中找到。 2. 在Python中,可以使用`BeautifulSoup`库来解析HTML文件。如果尚未安装该库,可以使用`pip install beautifulsoup4`命令进行安装。 3. 在Python脚本中,导入`BeautifulSoup`库并打开本地HTML文件。例如,使用以下代码: ``` from bs4 import BeautifulSoup # 打开本地HTML文件 with open('path_to_file.html', 'r', encoding='utf-8') as file: html_content = file.read() ``` 确保将`path_to_file.html`替换为实际的HTML文件路径。 4. 然后,使用`BeautifulSoup`库解析HTML内容。例如,使用以下代码: ``` soup = BeautifulSoup(html_content, 'html.parser') ``` 这将创建一个`BeautifulSoup`对象`soup`,可以使用它来提取和操作HTML元素。 5. 现在,你可以使用`soup`对象来提取HTML元素,例如标签、类、ID等。你可以使用`soup`对象的方法和属性来实现。例如,要提取所有链接元素,可以使用以下代码: ``` links = soup.find_all('a') for link in links: print(link.get('href')) ``` 这将打印HTML文件中所有链接的`href`属性。 以上就是使用Python爬取本地HTML文件的步骤。通过这些步骤,你可以以相同的方式操作本地HTML文件,就像操作远程HTML网页一样。 ### 回答3: 要使用Python爬取本地HTML文件,可以按照以下步骤进行: 1. 首先,确保你有一个本地的HTML文件,保存在计算机的某个文件夹中,例如文件路径是"路径/文件名.html"。 2. 导入必要的库,使用`import`语句引入Python的内置库`urllib.request`和第三方库`BeautifulSoup`。`urllib.request`库用于打开和读取本地HTML文件,`BeautifulSoup`库用于解析HTML文件。 3. 使用`urllib.request.urlopen()`函数打开本地HTML文件的URL。如果文件路径包含中文字符,需要使用`urllib.parse.quote()`函数编码文件路径。 示例代码如下: ``` import urllib.request from urllib.parse import quote from bs4 import BeautifulSoup url = quote("路径/文件名.html", safe='/:') html = urllib.request.urlopen(url).read() ``` 4. 使用`BeautifulSoup`库解析HTML内容。通过创建一个`BeautifulSoup`对象,传入HTML内容和解析器参数,可以将HTML文件转换为对象。 示例代码如下: ``` soup = BeautifulSoup(html, 'html.parser') ``` 5. 现在你可以使用`BeautifulSoup`对象来提取你需要的数据了。你可以使用标签选择器、CSS选择器或正则表达式等方法来定位或过滤出你想要的内容。 示例代码如下: ``` # 使用标签选择器提取所有的标题文本 titles = soup.find_all('h1') for title in titles: print(title.text) ``` 通过按照以上步骤,你就可以使用Python爬取本地HTML文件,并提取其中的数据了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值