requests整合selenium爬取网站关键词排名

**

神马搜索引擎之手机端搜索:白癜风类关键词对应网站排名!

**
涉及技术库: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()
程序的执行效果:

在这里插入图片描述
拜拜!大家一起加哈

猜你喜欢

转载自blog.csdn.net/weixin_47834823/article/details/107461119
今日推荐