网站首页 > 主流语言 > python 正文
#coding=utf-8
import requests
import BeautifulSoup
import re
import random
def decodeAnyWord(w):
try:
w.decode('utf-8')
except:
w = w.decode('gb2312')
else:
w = w.decode('utf-8')
return w
def createURL(checkWord): #create baidu URL with search words
checkWord = checkWord.strip()
checkWord = checkWord.replace(' ', '+').replace('\n', '')
baiduURL = 'http://www.baidu.com/s?wd=%s&rn=100' % checkWord
return baiduURL
def getContent(baiduURL): #get the content of the serp
uaList = ['Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+1.1.4322;+TencentTraveler)',
'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.4506.2152;+.NET+CLR+3.5.30729)',
'Mozilla/5.0+(Windows+NT+5.1)+AppleWebKit/537.1+(KHTML,+like+Gecko)+Chrome/21.0.1180.89+Safari/537.1',
'Mozilla/4.0+(compatible;+MSIE+6.0;+Windows+NT+5.1;+SV1)',
'Mozilla/5.0+(Windows+NT+6.1;+rv:11.0)+Gecko/20100101+Firefox/11.0',
'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+SV1)',
'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+GTB7.1;+.NET+CLR+2.0.50727)',
'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+KB974489)']
headers = {'User-Agent': random.choice(uaList)}
r = requests.get(baiduURL, headers = headers)
return r.content
def getLastURL(rawurl): #get final URL while there're redirects
r = requests.get(rawurl)
return r.url
def getAtext(atext): #get the text with and
pat = re.compile(r'(.*?)')
match = pat.findall(atext.replace('\n', ''))
pureText = match[0].replace('', '').replace('', '')
return pureText.replace('\n', '')
def getCacheDate(t): #get the date of cache
pat = re.compile(r'.*?(\d{4}-\d{1,2}-\d{1,2})')
match = pat.findall(t)
cacheDate = match[0]
return cacheDate
def getRank(checkWord, domain): #main line
checkWord = checkWord.replace('\n', '')
checkWord = decodeAnyWord(checkWord)
baiduURL = createURL(checkWord)
cont = getContent(baiduURL)
soup = BeautifulSoup.BeautifulSoup(cont)
results = soup.findAll('table', {'class': 'result'}) #find all results in this page
for result in results:
checkData = unicode(result.find('span', {'class': 'g'}))
if re.compile(r'^[^/]*%s.*?' %domain).match(checkData.replace('', '').replace('', '')): #改正则
nowRank = result['id'] #get the rank if match the domain info
resLink = result.find('h3').a
resURL = resLink['href']
domainURL = getLastURL(resURL) #get the target URL
resTitle = getAtext(unicode(resLink)) #get the title of the target page
rescache = result.find('span', {'class': 'g'})
cacheDate = getCacheDate(unicode(rescache)) #get the cache date of the target page
res = u'%s, 第%s名, %s, %s, %s' % (checkWord, nowRank, resTitle, cacheDate, domainURL)
return res.encode('gb2312')
break
else:
return '>100'
domain = 'www.baidu.com' #set the domain which you want to search.
print getRank('百度', domain)
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
猜你喜欢
- 2022-04-26 (1)python+selenium第一个自动化脚本:实现打开百度首页并搜索selenium
- 2022-04-26 Discuz!教程之启用HTTPS后解决各处遗留http://网址问题
- 2022-04-26 网站如何识别 你是 selenium爬虫?那我们怎么解决(反反爬)
- 2022-04-26 旋转拖动验证码解决方案
- 2022-04-26 python关键词排名_python实现百度关键词排名查询
- 2022-04-22 手把手教你Charles抓包工具使用
- 2022-04-22 python开发的程序内存越来越大_遇到个python进程占用内存太多的问题 | 数据,更懂人心...
- 2022-03-29 Selenium Python3 请求头配置
- 2021-07-16 一劳永逸彻底解决pip install慢的办法
- 2021-07-16 如何解决.cuda()加载用时很长的问题
你 发表评论:
欢迎- 开源分类
- 最近发表
-
- Unity3D研究院之通过ipa或apk获取游戏所使用的unity和Xcode版本
- Unity3D研究院编辑器之脚本生成Preset Libraries(十四)
- 手把手教你Charles抓包工具使用
- python开发的程序内存越来越大_遇到个python进程占用内存太多的问题 | 数据,更懂人心...
- Selenium Python3 请求头配置
- Unity3D研究院之系统内置系统图标大整理
- Unity3D研究院编辑器之5.3JSON的序列化
- Unity3D研究院编辑器之脚本打开SpritePacker窗口(十七)
- #你好Unity3D#Hierarchy视图监听gameObject点击事件
- Unity3D研究院编辑器之自定义默认资源的Inspector面板(十)
- 开源网标签
本文暂时没有评论,来添加一个吧(●'◡'●)