获取(复制)网页上的文字
今天在搜索历史课本上一段文言文的翻译时,找到的网页,屏蔽了右键,不能选择,当然不让复制啦。对于这样的网站可以采用如下方法进行数据的获取,以chrome为例。
1、网页另存为…
将网页另存为后,用文字编辑软件如:word打开即可。
2、登录微信截图文字识别
登录微信后,按快捷键Alt + A 截取图片,点击方字识别按钮识别。
3、安装浏览器插件
安装Toggle JavaScript 2.0(插件说明:Enable or disable JavaScript without the hassle.)禁止网页JavaScript。
4、在手机上打开网页后用在线编辑器打开
将网页地址传到微信的文件助手,打开链接,点击右上角三个点,选择“更多打开方式…", 用在线小程序打开。
5、使用开发者工具
使用爬虫获取接口时,有些网站屏蔽了右键打开检查,可以点击chrome菜单中三个点中选择更多工具中的开发者工具。
6、使用爬虫解析网页
import requests
from bs4 import BeautifulSoup
from lxml import etreeheaders = {"accept": "image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8","accept-language": "zh-CN,zh;q=0.9","cache-control": "no-cache","dnt": "1","pragma": "no-cache","priority": "u=1, i","sec-ch-ua": "\"Google Chrome\";v=\"105\", \"Not)A;Brand\";v=\"8\", \"Chromium\";v=\"105\"","sec-ch-ua-mobile": "?0","sec-ch-ua-platform": "\"Windows\"","sec-fetch-dest": "image","sec-fetch-mode": "no-cors","sec-fetch-site": "same-origin","sec-fetch-user": "?1","upgrade-insecure-requests": "1","user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36","referer": "https://wbblishi.com/post/161.html","Origin": "https://wbblishi.com","x-requested-with": "XMLHttpRequest",
}
cookies = {"PHPSESSID": "lodm1klkvlh1ft2nreaq1olpde","timezone": "8","mochu_us_notice_alert": "1"
}
url = "https://wbblishi.com/post/161.html"# 发送GET请求
response = requests.get(url, headers=headers, cookies=cookies)# 确保请求成功
if response.status_code == 200:# 尝试从响应头中获取编码并设置if 'Content-Type' in response.headers:content_type = response.headers['Content-Type']if 'charset=' in content_type:encoding = content_type.split('charset=')[-1]response.encoding = encodingelse:response.encoding = 'utf-8'# 获取网页的HTML源码html_content = response.text# 使用BeautifulSoup解析HTMLsoup = BeautifulSoup(html_content, 'lxml')# 使用lxml的etree解析器parser = etree.HTMLParser()tree = etree.fromstring(str(soup), parser)# 使用XPath提取指定范围的内容elements = tree.xpath('//*[@id="post-161"]/div/div[1]/p[position() >= 3 and position() <= 124]/span')# 输出提取的非None文本内容for element in elements:text = element.textif text: # 过滤掉 None 和空字符串print(text)
else:print(f"获取网页失败. Status code: {response.status_code}")
最后结果