Python小工具-根据输入关键字自动打开百度搜索结果的第一页

在不断填坑中前进。。

Posted by 三十一 on October 26, 2017

Python小工具-根据输入关键字自动打开百度搜索结果的第一页

PythonBaidu.gif

PythonBaidu.gif

步骤分析:

1. 伪装浏览器的 User-Agent
2. 读取输入参数并组装为请求参数
3. 使用 `requests` 模块请求数据
4. 使用 `bs4` 查找需要的链接数据
5. 使用`webbrowser`模块 打开链接。 代码如下:
# -*- coding: UTF-8 -*-
import requests, sys, webbrowser, bs4

#伪装浏览器头
def camouflageWrowser():
    reload(sys)
    sys.setdefaultencoding('utf-8')
    headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0'}
    return headers

# 读取输入参数并组装为搜索用的参数
def readInputParameterAndFormat():
    searchWorld =  ' '.join(sys.argv[1:])
    payload = {'wd':u'%s'%searchWorld}
    print("searchWorld = " + searchWorld)
    return  payload

# 搜索关键字
def requestsWithParameter(headers,parameter):
    url = 'http://www.baidu.com/s'
    r = requests.get(url, params=parameter, headers=headers, timeout=5)
    return r

# 查找需要的内容
def findNeedResult(request):
    # 查找需要的内容
    soup = bs4.BeautifulSoup(request.text,"html.parser")
    linkElems = soup.select('.result > .t > a[href]')
    topLinkElems = soup.select('.result-op > .t > a[href]')
    return linkElems + topLinkElems

# 打开全部搜索结果
def openElement(el):
    webbrowser.open(el.get('href'))


#伪装浏览器头
headers = camouflageWrowser()
# 读取输入参数
payload = readInputParameterAndFormat()
# 请求关键字数据
r = requestsWithParameter(headers,payload)
# 解析返回的结果
linkElems =  findNeedResult(r)

for el in linkElems:
    openElement(el)