搜索关键词自动提交

基本过程:

       1)输入:待查询的关键词

       2)处理:获得百度搜索结果页面后对页面内容解析处理

       3)输出:返回链接的标题的列表

例子:

      百度搜索首页为http://www.baidu.com,当输入一个搜索词后,url会变成:http://www.baidu.com/s?wd=keyword,我们可以手动输入这个链接,把keyword换成我们要的关键词,都可以获得查询结果,所以我们可以通过request的get()函数提交查询,响应结果为百度搜索到的结果。

现在我们要找到的是返回结果的标题,下边是百度搜索后的源码:

 可以发现标题是在div标签的data-tools属性的json格式的数据中,名叫“title”,在对它进行操作的时候可以用json库将其转换为字典,便于操作,下边就是这么做的,源码:

import requests
from bs4 import BeautifulSoup
import re
import json
def getKeywordResult(keyword):
    url = 'http://www.baidu.com/s?wd='+keyword #百度搜索的url构成
    try:
        r = requests.get(url, timeout = 30)
        r.raise_for_status()
        r.encoding = 'utf-8'
        return r.text
    except:
        return ""

def parserLinks(html):
    soup = BeautifulSoup(html, "html.parser")
    links = []
    for div in soup.find_all('div',{'data-tools':re.compile('title')}): #筛选,只查找所有dev标签下的data-tools属性下的带有title的字符串
        data = div.attrs['data-tools']  #尖括号<>中的标签的名字是name,尖括号中的其他项是attrs,这里的这个data-tools就是那个其他项喽,尖括号之间的内容是string
        d = json.loads(data)  #将属性由json转换成字典
        links.append(d['title']) #返回返回链接的题目,就是查询到的内容的标题
    return links

def main():
    html = getKeywordResult('Python 语言程序设计基础(第2版)')
    ls = parserLinks(html)
    count = 1
    for i in ls:
        print("[{:^3}]{}".format(count, i))
        count += 1

main()

运行结果:

 

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值