一个简单的python查询百度关键词排名的函数,特点:
1、UA随机
2、操作简单方便,直接getRank(关键词,域名)就可以了
3、编码转化。编码方面应该没啥问题了。
4、结果丰富。不仅有排名,还有搜索结果的title,URL,快照时间,符合SEO需求
缺点:
单线程,速度慢
#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)} ipList = ['202.43.188.13:8080', '80.243.185.168:1177', '218.108.85.59:81'] proxies = {'http': 'http://%s' % random.choice(ipList)} r = requests.get(baiduURL, headers = headers, proxies = proxies) 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 <a> and </a> pat = re.compile(r'<a .*?>(.*?)</a>') match = pat.findall(atext) pureText = match[0].replace('<em>', '').replace('</em>', '') return pureText def getCacheDate(t): #get the date of cache pat = re.compile(r'<span class="g">.*?(\d{4}-\d{1,2}-\d{1,2}) </span>') 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): #改正则 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.douban.com' #set the domain which you want to search. f = open('r.txt') for w in f.readlines(): print getRank(w, domain) f.close()

是的,YouCanconCatenatElistsusingAloopInpyThon.1)使用eparateLoopsForeachListToAppendIteMstoaresultList.2)useanestedlooptoiterateOverMultipliplipliplipliplipliplipliplipliplipliplistforamoreConciseApprace.3)

ThemostefficientmethodsforconcatenatinglistsinPythonare:1)theextend()methodforin-placemodification,2)itertools.chain()formemoryefficiencywithlargedatasets.Theextend()methodmodifiestheoriginallist,makingitmemory-efficientbutrequirescautionifpreserving

pythonboopsincludeforandwhileloops,with forloopsidealforequencessand and whileloopsforcondition repetition.bestpracticesinvolve:1)使用listComprehensionsforshensionsforsimpletranspletransformations,2)obseringEnumerateForIndex-valuepairs,3)optingftingftingfortermornemoremoremoremore

Python不是严格的逐行执行,而是基于解释器的机制进行优化和条件执行。解释器将代码转换为字节码,由PVM执行,可能会预编译常量表达式或优化循环。理解这些机制有助于优化代码和提高效率。

可以使用多种方法在Python中连接两个列表:1.使用 操作符,简单但在大列表中效率低;2.使用extend方法,效率高但会修改原列表;3.使用 =操作符,兼具效率和可读性;4.使用itertools.chain函数,内存效率高但需额外导入;5.使用列表解析,优雅但可能过于复杂。选择方法应根据代码上下文和需求。

有多种方法可以合并Python列表:1.使用 操作符,简单但对大列表不内存高效;2.使用extend方法,内存高效但会修改原列表;3.使用itertools.chain,适用于大数据集;4.使用*操作符,一行代码合并小到中型列表;5.使用numpy.concatenate,适用于大数据集和性能要求高的场景;6.使用append方法,适用于小列表但效率低。选择方法时需考虑列表大小和应用场景。

CompiledLanguagesOffersPeedAndSecurity,而interneterpretledlanguages provideeaseafuseanDoctability.1)commiledlanguageslikec arefasterandSecureButhOnderDevevelmendeclementCyclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesclesandentency.2)cransportedeplatectentysenty


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

记事本++7.3.1
好用且免费的代码编辑器

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

ZendStudio 13.5.1 Mac
功能强大的PHP集成开发环境