网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
成为超级会员,使用一键签到
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
12月02日
漏签
0
天
python吧
关注:
468,854
贴子:
1,950,670
看贴
图片
吧主推荐
视频
游戏
11
回复贴,共
1
页
<<返回python吧
>0< 加载中...
一个引人深思的问题
只看楼主
收藏
回复
伊格尼斯ignis
秀才
3
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
发现一个有趣的现象,如果read方法和readlines方法同时存在的话,潘森会不论先后顺序直接执行readlines并且不执行read,这是为什么
#Python##编程#
gdicnng
童生
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
f.seek(0)
贴吧用户_ayS923Z
童生
2
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
const axios = require('axios');
const cheerio = require('cheerio');
const fs = require('fs');
const puppeteer = require('puppeteer');
// 定义一个函数来处理请求的延迟,模拟人类行为,避免被反爬虫机制封禁
const delay = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
/**
* 执行网页抓取的函数
* @param {string} url - 要抓取的网页 URL
* @returns {Object} - 包含抓取到的数据的对象,如果抓取失败则返回 null
*/
async function crawl(url) {
try {
// 随机延迟 1 - 3 秒
await delay(Math.random() * 2000 + 1000);
// 使用 Puppeteer 处理动态内容
const browser = await puppeteer.launch();
const page = await browser.newPage();
try {
await page.goto(url);
} catch (gotoError) {
console.error(`Error navigating to ${url}: ${gotoError.message}`);
await browser.close();
return null;
}
const content = await page.content();
const $ = cheerio.load(content);
const title = $('title').text().trim();
const paragraphs = $('p').map((index, element) => $(element).text().trim()).get().join(' ');
const links = $('a').map((index, element) => $(element).attr('href')).get();
const images = $('img').map((index, element) => $(element).attr('src')).get();
const headings = $('h1, h2, h3, h4, h5, h6').map((index, element) => $(element).text().trim()).get();
// 处理动态内容(这只是一个简单的示例,实际情况可能更复杂)
const dynamicContent = await page.evaluate(() => {
// 假设动态内容在一个特定的元素中,例如 id 为 "dynamicContent"
return document.getElementById('dynamicContent').innerHTML;
});
// 分类存储数据
try {
fs.writeFileSync('titles.txt', title + '\n', 'utf-8');
fs.writeFileSync('paragraphs.txt', paragraphs + '\n', 'utf-8');
fs.writeFileSync('links.txt', JSON.stringify(links) + '\n', 'utf-8');
fs.writeFileSync('images.txt', JSON.stringify(images) + '\n', 'utf-8');
fs.writeFileSync('headings.txt', JSON.stringify(headings) + '\n',
贴吧用户_QeNJASM
榜眼
12
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
读完文件后指针已经在文件末尾了,你得用seek(0)把指针移回文件开头
馒头伏地魔
举人
5
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你只是把print的顺序调换了
,readlines()两次都是在read()前面的。 然后执行完readlines之后,文件指针在文件末尾(每次读写只会从指针的位置开始读),你再read(),就什么都读不出来了
xxn先别急
进士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
readlines完之后文件指针已经到末尾了,读不出东西了
研岩丁真
贡士
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
因为不管是readlines还是read都是指针在文件里移动,你可以当成打开txt后的那个光标,你按键盘→光标就会移动一次,要么你移到最前面要么你关文件再开一次,所以你可以试试在Python里read完一行后,再read一次,它输出的就是下一行开始
语幽歆
进士
8
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
你都读完了read读啥,换下位置看看
科學信仰
贡士
6
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
贴吧网页版想点个赞都找不到地方
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示