python 百度收录查询site爬虫,百度快照标题内容爬取

本人纯为爱好,请各位大神多多关照,有任何问题可以留言

# -*- coding: GB2312 -*-

import requests  # 发送请求
from bs4 import BeautifulSoup  # 解析页面
from lxml import etree
import pandas as pd  # 存入csv数据
from time import sleep  # 等待间隔
import random  # 随机
import csv


# 注:本代码是用 Visual Studio 2022 运行,
# 抬头需使用  # -*- coding: GB2312 -*-   ,用utf-8  ,输出DOS窗口,中文汉字为乱码;
# 另外在 文件-高级保存选项  内容也需要确认保持统一
# 下面代码需更换自己的"Cookie",需登陆baidu账号后查看。
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
    "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6",
    "Connection": "keep-alive",
    "Accept-Encoding": "gzip, deflate, br, zstd",
	"Host": "www.baidu.com",
    "Cookie": "************4Q0m4j9"
	}

# 下面代码解释URL,xpath 所需内容,并保存csv
# 修改数字,想要哪页,(0,为一页,1为一页,2为两页);(3,6)为 第3页到第5页的内容。第一次测试可写2,看下出来的是否正确;
for page in range(0):  
	 # 等待时长秒
	wait_seconds = random.uniform(3, 6) 
	# 随机等待
	sleep(wait_seconds)  
	 # 需更换为 自己的网址
	url = 'https://www.baidu.com/s?wd=site%3Awww.***.com.cn' + '&pn=' + str(page * 10)
	html = requests.get(url, headers=headers)
	soup = etree.HTML(html.text)
	# 快照标题,注:xpath  如找文本需填加 /text()
	title = soup.xpath('//*[@class="result c-container xpath-log new-pmd"]//h3/a/text()')  
	# 快照链接,注:xpath  如找文本需填加 /text()
	link = soup.xpath('//*[@class="result c-container xpath-log new-pmd"]//@mu')  
	#判断 两列是否都有数据,不正常就报错
	assert len(title) == len(link)    
	
	# 打开CSV文件进行写入
	# 创建的文件,写入数据,原有数据不变,注:表格禁止打开编辑,否则再用会乱码
	with open('input.csv', 'a', newline='', encoding='utf-8') as csvfile:  
		writer = csv.writer(csvfile)
		# 第一次写入标题行,取消可跳过标题写入
		writer.writerow(['ID','标题', '网址'])  
		# ID为自增列( 只能实现每页数据自增0)
		for i, (title, link)in enumerate(zip(title, link), start=1):   
			# 写入查询结果
			writer.writerow([i,title, link]) 
			# 显示实际爬取的URL和爬取数量
			print('正在爬取:{},共查询到{}个结果'.format(url, len(link)))  

# 下面代码为 读取CSV文件,跳过第一行,并检查其余每一行,过滤含有"ID"的行,并填加自增列,并保存新表内
#读取CSV文件 假设第一行是标题行			
df = pd.read_csv('input.csv', header=0)  
# 条件过滤:跳过含有"ID"的行 ,替换YourColumnName为实际列名
condition = df['ID'].str.contains('ID', na=False)  
# 不能去掉“~‘,会出错,原因不详
df = df[~condition]   
# 填加自增列
df['序号'] = range(1, len(df) + 1)  
# 保存到新的CSV文件 不保存行索引
df.to_csv('output.csv', index=False)  

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值