pengGgxp 发表于 2023-11-16 00:45

Python获取blog文章内容

临时写的一个,应用场景佷有限,大家凭自己再扩展吧,我是因为要把一个文章迁移,强制复制也不行,就写了个这玩意,直接上图了:


这个可以再扩展成更自动的,可是我懒,希望有闲的没事的大佬扩展一下,我要借鉴(抄)~~

pengGgxp 发表于 2023-11-16 11:33

云在天 发表于 2023-11-16 06:34
为什么要提供图片, 不提供代码呢

代码在这
import re
import requests
from lxml import etree

post_url = input('请输入文章地址:')
#根据文章地址get数据
res = requests.get(post_url)

xx = res.content.decode('utf-8')

x = etree.HTML(xx)
#需要获取父级xpath
#xpath示例://*[@id="article-container"]
#不会的百度吧
xpath = input('请输入xpath路径,可打开控制台查看:')
content = x.xpath(xpath + '//*')

ree = re.compile(r'class=".*"|id=".*"')
urll = re.compile(r'(?<=(src="))(/).*?(?=("))')
with open('resualt.txt', 'w', encoding='utf-8') as file:
    tep1 = ''
    for i in content:
      tep = etree.tostring(i, encoding='utf-8').decode('utf-8').strip()
      tep = re.sub(ree, '', tep)
      strr = re.search(urll, tep)
      #如果图片是相对路径,就自动替换成绝对路径,(需要自己寻找修改路径地址)
      #后面不用管,只需要找到前面的路径就行就像https://dreamtea.top
      #需要自己实测
      if strr is not None:
            strr = strr.group()
            tep = re.sub(urll, 'https://cdn.com' + '/' + strr, tep)
            # print(tep)
            strr = None
      if tep != tep1 and tep in tep1:
            #print(tep)
            continue
      file.write(tep)
      tep1 = tep
print('导出完成!')

USER7086 发表于 2023-11-16 08:56

import re
import requests
from lxml import etree
post_url = input('请输入文章地址: ')
#根提文章地址get数据
res = requests. get(post_url)
xx= res. content. decode('utf-8')
x = etree. HTML(xx)
#需要获取父级xpath
#xpath示例: //*[@id="article-container"]
#不会的百度吧
xpath = input('请输入xpath路径, 可打开控制台查看:')
content = x. xpath(xpath + '//*')
ree = re. compile(r'class=".*"|id=".*"')
url l = re. compile(r'(?<=(src="))(/).*?(?=("))')
with open('resualt. txt', 'w', encoding='utf-8') as file:
tep1 = ''
for i in content:
tep = etree. tostring(i, encoding='utf-8'). decode('utf-8'). strip()
tep = re. sub(ree, ", tep)
strr = re. search(urll, tep)
#如果图片是想对路径,就自动背换成绝对路径,《需要自己寻找修改路径地址》
#后面不用筒,只需要找到煎面的路径就行。就像 https://dreamtea.top
#需要自己实测
if strr is not None:
strr r = strr. group()
tep = re.sub(urll, ' https://cdn.con'+'/'+strr,tep)
# print(tep)
strr = None
if tep != tep1 and tep in tep1:
#print(tep)
continue
file. write(tep)
tep1 = tep
print('导出完成!')

pengGgxp 发表于 2023-11-16 00:46

如果有不会获取xpath可以直接百度!
或者按我的方法,打开开发者工具,进入选择模式,选中父级(最外面那个)元素,然后 右键->复制->复制xpath(或者复制完整xpath,基本一样)

云在天 发表于 2023-11-16 06:34

为什么要提供图片, 不提供代码呢

goditorjoker 发表于 2023-11-16 07:40

最好加上uer-agent防止反爬,直接请求可能会失败

sai609 发表于 2023-11-16 07:53

为什么要提供图片, 不提供代码呢

winxpnt 发表于 2023-11-16 08:04

好东东,收藏,感谢分享

chenqc 发表于 2023-11-16 08:23

牛逼,谢谢

CHENYF8318 发表于 2023-11-16 08:33

为什么要提供图片, 不提供代码呢?

xiaotwins 发表于 2023-11-16 08:34

学习了 不错不错

zlxtqbdqq 发表于 2023-11-16 08:34

要是有代码就更好了,我们也想借鉴
页: [1] 2 3 4
查看完整版本: Python获取blog文章内容