**
神马搜索引擎之手机端搜索:白癜风类关键词对应网站排名!
**
涉及技术库:requests整合selenium,即selenium自动打开Google浏览器并访问链接,然后通过requests库设置session和cookies来保持下载的代码与刚才打开的链接的代码完全一致!
下面这个函数对应的文件我起的名字是:showtime.py,主要用来计算该程序执行的总时间:
import time
import requests
def timeit(f):
def wrapper(*args, **kwargs):
start_time = time.time()
res = f(*args,**kwargs)
end_time = time.time()
print("%s 函数执行时间:%.8f" % (f.__name__, end_time-start_time))
return res
return wrapper
接下来这个文件我起的名字是:神马关键词排名.py,由它实现程序的功能,并引入上面的“showtime.py”文件来计算其执行的总时间。具体代码如下:
import requests
from selenium import webdriver
from lxml import etree
from time import sleep
from showtime import timeit
from requests.cookies import RequestsCookieJar
options = webdriver.ChromeOptions()
options.add_argument('user-agent="Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36"')
google_driver = webdriver.Chrome(chrome_options=options) #启动谷歌
google_driver.maximize_window() # 最大化窗口
keywords = ['宁波哪儿有治疗白癜风的医院', '宁波白癜风在哪治', '舟山那家医院治白癜风病', '台州白癜风医院那家好', '宁波有专门治疗白癜风的医院吗'
,'宁波白癜风费用多么', '宁波专业看白癜风医院', '宁波哪里有看白癜风的医院', '宁波能治白癜风的医院','宁波白癜风的专科医院', '舟山医治白癜风效果好的医院', '宁波到哪看白癜风医院好',
'宁波最好的白癜风医院在哪里', '宁波白癜风医院哪家最好', '舟山去哪医院看白癜风', '宁波哪家医院治白癜风最好','台州白癜风治疗最好的医院','宁波可以看白癜风的医院'
,'舟山哪里看老年白斑','宁波哪个医院治白癜风好点','舟山去哪里治白癜风','宁波专业治疗白癜风的医院','宁波哪家医院看白斑好','宁波老牌白癜风医院'
,'宁波治效果好的白癜风医院','宁波治白癜风效果好的医院','舟山医白癜风哪家医院好', '宁波专治白癜风病的医院', '宁波治疗白癜风哪家医院好', '宁波白癜风治疗医院哪个最好']
def download_sm(url, sess, jar, i, keyword): #下载神马网站源码
print('--------------------------正在下载第' + str(i) + '篇"'+keyword+'"的URL域名--------------------------')
header = {
"User-Agent": 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Mobile Safari/537.36'
}
data=sess.get(url,cookies=jar, headers=header)
return data.text
def data_clean(pretty_html): #数据清洗,即提取神马网站源码中的对应网站的域名
lxml_html = etree.HTML(pretty_html)
list_advertisement_url = lxml_html.xpath("//div[@class='other']")
i = 0
for value in list_advertisement_url:
i = i+1
print(value.text+"\t排名:"+str(i))
@timeit #引入“showtime.py”文件的timeit()函数,放在start()函数之上来计算start()函数的执行时间,即本程序的大致执行时间
def start(): #程序主体
num = 0
for keyword in keywords:
num = num+1
url = 'https://m.sm.cn/s?q='+keyword+'&by=submit&from=smor&tomode=center&safe=1'
google_driver.get(url)
sleep(1) #sleep(1)也可以注释掉不影响结果,这样会快一点,不用长时等待
cookie_dict=google_driver.get_cookies()
sess=requests.session()
jar=RequestsCookieJar()
for cookie in cookie_dict:
jar.set(cookie['name'], cookie['value'])
pretty_html = download_sm(url, sess, jar, num, keyword)
data_clean(pretty_html)
if __name__ == "__main__": #程序入口
start()
程序的执行效果:
拜拜!大家一起加哈