Python + MySQL 批量查询百度收录
做SEO的同学,经常会遇到几百或几千个站点,然后对于收录情况去做分析的情况
那么多余常用的一些工具在面对几千个站点需要去做收录分析的时候,那么就显得不是很合适。
在此特意分享给大家一个批量查询百度收录状况的代码
使用 Python + MySQL(MariaDB) 配合使用
import pymysql
from urllib import request
import re
import time
import os,sys
# 数据操作类
class DataExec:
# 定义私有属性
# 数据库名称
db = "domain"
dt = "bdshoulu"
# 数据库登录信息
hostName = "localhost"
userName = "root"
password = "pwd"
# 构造方法
def __init__(self):
self.conn = self.conn()
# 析构方法
def __del__(self):
self.conn.close()
# 创建数据库连接对象
def conn(self):
host = self.hostName
user = self.userName
password = self.password
dbs = self.db
conn = pymysql.connect(host=host,
user=user,
password=password,
db=dbs,
charset='utf8mb4')
return conn
# 查询数据
def selectwebsite(self):
dt = self.dt
conn = self.conn
cursor = conn.cursor()
sql = 'select id,website from %s order by id' % dt
try:
cursor.execute(sql)
return cursor.fetchall()
except:
print("%s" % sql)
# 修改数据
def update_shoulu(self, id, shoulu):
dt = self.dt
conn = self.conn
cursor = conn.cursor()
sql = 'update {_table} set shoulu = "{_shoulu}" where id = "{_id}"'.\
format(_table = dt, _shoulu = shoulu, _id = id)
try:
cursor.execute(sql)
# 提交数据
conn.commit()
except:
# 数据回滚
conn.rollback()
def commit(self):
self.conn.commit()
db = DataExec()
results = db.selectwebsite()
for row in results:
id = row[0]
website = row[1]
url = "https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=site:" + website
# print(url)
try:
req = request.Request(url)
req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.94 Safari/537.36')
# 直接请求
response = request.urlopen(req,timeout=15)
# 获取状态码,如果是200表示成功
if response.status == 200:
# 读取网页内容
html = response.read().decode('utf-8', 'ignore')
# print(html)
pattern = re.compile(r'找到相关结果数约(\d+?)个')
m = pattern.search(html)
print(m)
if m:
slnum = m.group(1)
print(id, website, '已收录 ', slnum)
db.update_shoulu(id, slnum)
else:
pattern = re.compile(r'该网站共有\s*?<b style=\"color:#333\">(.+?)</b>\s*?个网页被百度收录')
m = pattern.search(html)
if m:
slnum = m.group(1)
slnum = int(slnum.replace(',',''))
print(id, website, '已收录 ', slnum)
db.update_shoulu(id, slnum)
else:
print(id, website)
except:
continue
time.sleep(1)
# 统一提交数据
# db.commit()
sys.exit()
上面代码思路就是从数据库中抓取出各个域名(website),然后使用Python抓取百度的查询收录的页面,更新其参数,然后对于返回的结果使用正则匹配到对应的收录结果。整理思路比较简单,不熟悉的可以读取代码走一遍流程即可,需要的同学拿走
Python + MySQL 批量查询百度收录的更多相关文章
- 【Python】批量查询-提取站长之家IP批量查询的结果v1.0
0 前言 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 1 使 ...
- python MySQL慢查询监控
MySQL慢查询会话监控 #!/usr/bin/python # -*- coding: UTF-8 -*- from email.mime.text import MIMEText from ema ...
- mysql批量查询
一般批量查询的时候都是in关键字,但是在数据量大的时候,效率低下. 这个时候我们就可以考虑使用union . xml 核心代码 <select id="selectList" ...
- 【Python】批量查询-提取站长之家IP批量查询的结果加强版本v3.0
1.工具说明 写报告的时候为了细致性,要把IP地址对应的地区给整理出来.500多条IP地址找出对应地区复制粘贴到报告里整了一个上午. 为了下次更好的完成这项重复性很高的工作,所以写了这个小的脚本. 某 ...
- Java MySQL 批量查询数据,每次查询10条
因为 数据量比较多, 比如每次 /** * 批量查询 * @param sourList * @param batchCount * @param userMapper * @return */ pu ...
- python mysql参数化查询防sql注入
一.写法 cursor.execute('insert into user (name,password) value (?,?)',(name,password)) 或者 cursor.execut ...
- Python 实现批量查询IP并解析为归属地
一.背景: 最近工作中做了一个小功能,目的是为了分析注册用户区域分布和订单的区域分布情况.所以需要将其对应的IP信息解析为归属地,并同步每天同步更新.线上跑起来效率还是有优化的空间,优化的方向:在调用 ...
- Python MySQL - 创建/查询/删除数据库
#coding=utf-8 import mysql.connector import importlib import sys #连接数据库的信息 mydb = mysql.connector.co ...
- python+mysql抓取百度新闻的标题存到数据库
#!usr/bin/python# -*- coding:utf-8 -*-import urllib2 import re import MySQLdb class BaiDuNews: def _ ...
随机推荐
- 轻量级熔断降级框架 alibaba sentinel 应用
一.简介: wiki:https://github.com/alibaba/Sentinel/wiki 选择: ♥ 开源,成熟(功能完备.实际应用),活跃(功能维护及拓展) ♥ 更轻量:依赖资源少:a ...
- keepalived的一些。。
继续采坑..有些坑,踩了才知道. 1.文件位置不能错. 首先是安装, 源码编译,--prefix=/usr/local/keepalive 然后用 sbin/keepalive -f ...conf ...
- Redux:action
引入redux之后,代码中对组件state的更新变得规范而可控,不再是分散的一句句setState,而是将组件的state集合在一个单例store中,并以引用的方式获取各自的state. 对于stat ...
- 谈谈C#中各种线程的使用及注意项~
说到线程,很多人会想到timer吧, 接下来我们就来学习一下 timer 吧,摇摇脑袋,清醒一下,接下来开始学习.... 一.基本概念 1.什么是进程? 当一个程序开始运行时,它就是一个 ...
- YYTimer学习笔记
参考资料: https://github.com/ibireme/YYKit/blob/master/YYKit/Utility/YYTimer.h https://www.jianshu.com/p ...
- 首字母变大写(hdu2026)
输入方式:直接循环输入带有空格的未知长度的字符串. 思考:直接循环输入带有空格的未知长度的字符串,用while(gets_s())函数,循环内外不用getchar()函数.(注意,每次字符串以整体输入 ...
- PHP的图像函数
imagecreate() 和 imagecreatetruecolor() 函数用于创建一幅空白图像. imagedestroy() 函数用于销毁图像资源. imagecreate() 如果我们要对 ...
- getcomputedstyle和style的区别
1.只读与可写getComputedStyle方法是只读的,只能获取样式,不能设置:而element.style能读能写,能屈能伸.2.获取的对象范围getComputedStyle方法获取的是最终应 ...
- FPGA开发工具套餐搭配推荐及软件链接 (更新于2020.03.16)
一.Xilinx(全球FPGA市场份额最大的公司,其发展动态往往也代表着整个FPGA行业的动态) (1) Xilinx官方软件下载地址链接: https://china.xilinx.com/supp ...
- Java基础语法--java中字符串比较中的坑点
Java 中两个字符串比较大小,可以有两种方式判定,要根据需求选择 == 判定,比较的是两个字符串的内存地址,地址相同则判定为true:反之则反 equals() 判定,比较的是两个字符串的内容,内容 ...