爬虫文章(xpath+正则)

推荐一本书《为何爱会伤人》

读了真的受益匪浅

这里加个3分钟读一本书的链接  https://v.douyin.com/i8F4HnGK/

找个阅读网站

11ca9ef9bfb140fa9e08867444b4d5c8.png

爬取效果

5a2b58b23d4048479f0817adfaef9de4.png

完整代码

只用到requests,lxml

每个章节保存为一个txt

​
import requests,re,os
from lxml import etree
dv=os.path.join(os.path.expanduser("~"),"Desktop\读书")
if not os.path.exists(dv):
    os.mkdir(dv)
url='https://www.wxzpyd.com/novel/catalog/610fadf97dbb3f28a8755413_1?cur=2&page=1&source=%2Fnovel%2Fchapter%2F209_610fadf97dbb3f28a8755413_610fadfc7dbb3f28a8755421.html%3Fpage%3D1%26pagecount%3D1%26tt%3D7758258'
gu=requests.get(url)
gul=etree.HTML(gu.text)
gus=gul.xpath('//*[@id="app"]/div[2]/main/ul/li')
a=0   #第几章节
for i in gus:
    name = i.xpath('a/text()')[0]
    try:
        na=name.split(' ')[2]
        me=name.split(' ')[3]
        name=na+me
    except:
        name=name
    sr = i.xpath('a/@href')[0]
    src = 'https://www.wxzpyd.com/' + sr
    gumo=requests.get(src)
    pattern = re.compile(r'<p>(.*?)</p>')  # 匹配 <p></p> 标签内的文本内容
    # 使用正则表达式查找匹配项
    matches = pattern.findall(gumo.text)
    with open(dv+'/'+str(a)+name+'.txt', 'w', encoding='utf-8') as file:
        # 将匹配到的内容逐行写入文件
        for match in matches:
            file.write(match + '\n')
    a=a+1
    print(name+'-下载完成')

​

所有章节保存为一个txt

import requests,re,os
from lxml import etree
dv=os.path.join(os.path.expanduser("~"),"Desktop\读书")
if not os.path.exists(dv):
    os.mkdir(dv)
url='https://www.wxzpyd.com/novel/catalog/610fadf97dbb3f28a8755413_1?cur=2&page=1&source=%2Fnovel%2Fchapter%2F209_610fadf97dbb3f28a8755413_610fadfc7dbb3f28a8755421.html%3Fpage%3D1%26pagecount%3D1%26tt%3D7758258'
gu=requests.get(url)
gul=etree.HTML(gu.text)
gus=gul.xpath('//*[@id="app"]/div[2]/main/ul/li')
a=0   #第几章节
with open(dv+'/'+'为何爱会伤人'+'.txt', 'w', encoding='utf-8') as file:
    for i in gus:
        sr = i.xpath('a/@href')[0]
        src = 'https://www.wxzpyd.com/' + sr
        gumo=requests.get(src)
        pattern = re.compile(r'<p>(.*?)</p>')  # 匹配 <p></p> 标签内的文本内容
        # 使用正则表达式查找匹配项
        matches = pattern.findall(gumo.text)
            # 将匹配到的内容逐行写入文件
        for match in matches:
            file.write(match + '\n')
保存后可转到微信读书导入书架(该书为付费书籍)

可以转存为word

from docx import Document
# 创建一个新的 Word 文档
doc = Document()
# 将匹配到的内容写入 Word 文档
...
for match in matches:
    doc.add_paragraph(match)
# 保存 Word 文档
doc.save('matched_content.docx')

仅用来练手 无其他用途

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值