爬取必应关键字搜索结果url

上代码

import aiohttp
import asyncio
from lxml import etree
import aiofiles
import time
import random
'''aiohttp 和 asyncio 用于异步HTTP请求和事件循环。
lxml 用于解析HTML。
aiofiles 用于异步文件操作。
time 和 random 用于控制爬取速度。'''
headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:127.0) Gecko/20100101 Firefox/127.0',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8',
    'Accept-Language': 'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
    'Accept-Encoding': 'gzip, deflate'
}

async def url(n, keyword, file_name):
    async with aiohttp.ClientSession() as session:
        #目录根据自己需求来
        async with aiofiles.open(file_name, 'w', encoding='utf-8') as file:
            count = 0
            for i in range(n):  # 通过for in来翻页
                url = f'https://cn.bing.com/search?q={keyword}&first={i+1}&FORM=PERE'
                try:
                    async with session.get(url, headers=headers) as resp:
                        r = await resp.text()
                        a = etree.HTML(r)
                        xpath = a.xpath('//*[@id="b_results"]/li/h2/a/@href')  # 提取url连接
                        time.sleep(random.randint(1, 3))# 控制爬取速度
                        for i in xpath:
                            count += 1
                            await file.write(i + '\n' + '---------------------------------' + str(count) + '\n')
                except Exception as e:
                    print('无法连接:', e)
'''该函数接受三个参数:n(要爬取的页数),keyword(搜索关键字),file_name(保存结果的文件名)。
使用 aiohttp.ClientSession 创建一个异步HTTP会话。
使用 aiofiles.open 异步打开文件进行写入。
通过 for 循环遍历要爬取的页数,构造每页的URL。
使用 session.get 发送异步HTTP请求,获取响应并解析HTML。
使用 etree.HTML 解析HTML,并通过XPath提取目标URL。
使用 time.sleep 和 random 控制爬取速度,避免被封IP。
将提取的URL写入文件,并记录提取的URL数量。'''

keyword = input('请输入要搜索的关键字:')
n = int(input('请输入要爬取的页数:'))
filename = input('请输入要保存的文件名:')
asyncio.run(url(n, keyword, filename))

使用的话,在该目录下cmd运行即可

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/750050.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql安装创建数据库防止踩坑

为了安装MySQL的家人们走弯路,稍微有些啰嗦,讲述我安装的时遇到的问题,如何解决。仔细看看离成功不远。 mysql下载链接 MySQL :: Download MySQL Community Server windows下安装mysql-8.0.29-winx64,下载安装包后解压到文件夹中…

2024十大首码地推拉新app平台,一手首码对接平台!

到了2024年,地推新应用的接单平台成为创业者们关注的焦点。对于地推行业的从业人员而言,选择一家拥有一手单资源的平台至关重要,因为这直接关系到他们的利益。 2024年如果想要进行app地推活动,却没有人脉渠道的困扰,建…

谷歌网络营销中SEO的策略有哪些?

在网络营销中,SEO(搜索引擎优化)是一种关键策略,旨在提高网站在搜索引擎结果中的排名。首先,要进行关键词研究,找出潜在客户使用的搜索词。接下来,优化网站内容,使其包含这些关键词&…

【Java Web】Ajax异步请求

目录 一、Ajax概述 二、Ajax执行原理 三、实现Ajax的请求 一、Ajax概述 传统情况下,浏览器与服务端的交互都是采用同步交互的方式进行的;此交互方式用户在向服务端发送请求后只有等到服务端的响应报文回来后用户才能在标签页上进行其它操作,即…

openlayer 鼠标点击船舶,打开船舶简单弹框

背景: 对创建的地图对象,可以添加上监听事件,常用的有:地图点击事件、鼠标移动事件。 通过监听这些事件,又可以区分不同图层的不同要素,获取不同数据; 根据这些数据,又可以发起网络请…

电脑的D盘E盘F盘突然消失了 电脑只剩下C盘了其他盘怎么恢复

现如今随着时代的发展,无纸化办公成为主流,这主要归功于电脑,能够通过电脑完成的工作绝不使用纸质文件,这不仅提高了工作效率,也让一些繁杂的工作变的更加简单。不过电脑毕竟是电子产品,不可避免的会出现一…

【包邮送书】深度学习与信号处理

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

win11家庭版没有gpedit解决

1、右键桌面,新建记事本,把后缀名txt修改成bat 2、输入以下命令: echo offdir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows\servicing\Packages\Micr…

electron-builder创建桌面应用

一、利用vue-cli创建vue项目 创建electron方式有很多,这里说的是vuecli创建的项目,通过安装electron-builder插件创建 也可以通过electron-vite构建项目 : https://cn.electron-vite.org/guide/ vue-cli构建 vue create XXX项目名 //按提示操…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片?在工程设计、建筑设计、机械设计等领域,CAD图纸的编辑和分享是一项日常工作。然而,如何将CAD图纸高效、准确地导出为图片格式,一直是设计师们关注的焦点。今天,就为大家推荐四款强大的CAD导出图片软…

Ubuntu 20.04安装显卡驱动、CUDA、Pytorch(2024.06最新)

文章目录 一、安装显卡驱动1.1 查看显卡型号1.2 根据显卡型号选择驱动1.3 获取下载链接1.4 查看下载的显卡驱动安装文件1.5 更新软件列表和安装必要软件、依赖1.6 卸载原有驱动1.7 禁用默认驱动1.8 安装lightdm显示管理器1.9 停止显示服务器1.10 在文本界面中,禁用X…

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序 SSM 药店管理系统小程序 功能介绍 用户 登录 注册 首页 药品信息 药品详情 加入购物车 立即购买 收藏 购物车 立即下单 新增收货地址 我的收藏管理 用户充值 我的订单 留言板 管理员 登录 个人中心 修改密码 个人信息…

196.每日一题:检测大写字母(力扣)

代码解决 class Solution { public:bool detectCapitalUse(string word) {int capitalCount 0;int n word.size();// 统计大写字母的数量for (char c : word) {if (isupper(c)) {capitalCount;}}// 检查是否满足三种情况之一if (capitalCount n) {// 全部字母都是大写return…

查看LabVIEW及各个模块和驱动的版本号

要方便地查看当前计算机上安装的LabVIEW版本以及各个模块和驱动的版本号,可以使用以下几种方法: 1. 使用NI MAX (Measurement & Automation Explorer) NI MAX 是一个强大的工具,可以帮助你管理National Instruments硬件、软件和驱动程序…

软件测试面试被面试官问到:你会搭建测试环境吗?该怎么回答显得很有水平

一、你会搭建测试环境吗? 导语:很多人在面试软件测试的过程中,经常被问到“你会搭建测试环境吗”?面对这样的提问,你知道怎么回答么? 二、如何回答 面试的时候,遇到这样的提问,很多…

linux系统中vim ls grep等命令无法使用

linux突然vim ls grep等命令无法使用 系统配置路径被修改导致无法使用 添加路径 执行以下命令 export PATH$PATH:/root/bin export PATH$PATH:/usr/sbin

【Java Web】简单了解前端工程化

目录 一、什么是前端工程化? 二、前端工程化使用的技术栈 一、什么是前端工程化? 前端工程化是使用软件工程的方法来单独解决前端的开发流程中模块化、组件化、规范化、自动化的问题,其主要目的为了提高效率和降低成本。说白了就是将曾经同在一个工程中的前端和后…

智能化物业服务:楼层动态一目了然

通过图扑先进的可视化技术,实现对物业楼层的实时监控与高效管理。全面掌握楼层动态,优化资源配置,提升响应速度和服务质量,为业主提供智能化、便捷化的物业管理体验。

背部筋膜炎最有效的治疗方法

背部筋膜炎的引起原因可以归结为多个方面,以下是详细的分点表示和归纳: 1、慢性劳损:长时间使用背部,如经常按摩背部,会导致筋膜老化、发炎,进而引发背部筋膜炎。症状可能包括背部疼痛、痉挛、肌肉无力感等…

股指期权交割日期是什么时候?在每个月几号?

今天带你了解股指期权交割日期是什么时候?在每个月几号?期权交割日是指合约到期之日,即投资者需要履行买卖合约的义务。 股指期权的交割日期通常是期权合约到期日的第三个星期五。如果这一天是公共假日,则交割日可能会提前到前一…