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 _ ...
随机推荐
- Redis-主从
主从复制过程 1.从服务器开始连接主服务器时,会向主服务器发送一个SYNC同步命令 2.主服务器接收到命令后,执行BGSAVE,异步的将写命令保存到一个缓冲区里 3.主服务器执行完BGSAVE之后,就 ...
- 201771010128王玉兰《面向对象与程序设计(Java)》第十七周学习总结
第一部分:理论基础 线程的同步 多线程并发运行不确定性问题解决方案:引入线 程同步机制,使得另一线程要使用该方法,就只 能等待. 在Java中解决多线程同步问题的方法有两种: - Java SE 5. ...
- JAVA局部变量和成员变量的区别
成员变量与局部变量的区别 1.在类中的位置不同 成员变量:在类中方法外面 局部变量:在方法或者代码块中,或者方法的声明上(即在参数列表中) 2.在内存中的位置不同 成员变量:在堆中(方法区中的静态区) ...
- MySql 常用的函数
一.聚合函数 avg(col) 计算平均值 count(col) 计算中非NULL值的个数(这个容易忘) greatest(x1,x2,...,xn) 返回集合中最大的值 ...
- web自动化之浏览器的窗口切换
from selenium import webdriver from selenium.webdriver.support.wait import WebDriverWait from seleni ...
- Lambda表达式用法大比较: Scala和Java 8
最近几年Lambda表达式风靡于编程界. 很多现代编程语言都把它作为函数式编程的基本组成部分. 基于JVM的编程语言如Scala,Groovy还有Clojure把它们作为关键部分集成在语言中.现在Ja ...
- Linux学习(二):makefile
编译命令: gcc -o exefile src.c (将src.c编译,链接为exefile可执行文件) gcc -o obj.o -c src.c (将src.c编译为obj.o目标文件) mak ...
- 【Mathtype】安装Mathtype后,word无法粘贴的问题
Win10安装mathtype后,word工具栏中自动添加mathtype的选项(mathtype为了使用户更加方便使用,故自动添加),但是却导致word无法粘贴.如何解决该问题? [方案1]官网描述 ...
- [Android-NDK编译] ndk 编译 c++ 兼容性问题汇总整理
1.__int64找不到符号 采用int64_t来代替: #if defined(__ANDROID__) typedef int64_t __int64; #endif 2.<sys/io.h ...
- 删除节点与插入节点 & innerHTML
1.测试removeChild()方法: 删除节点dom9.html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" &q ...