欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 抓取百度搜索名称和路径

程序员文章站 2022-06-14 08:39:01
...

python 新手笔记:利用python,根据搜索关键字,抓取其结果的名称和路径。

 

一、百度搜索参数介绍

pn :抓取第几页内容

cl :搜索的类型 3 为网页搜索 2为新闻搜索

wd :搜索关键字

rn  :需要搜索多少条结果

 

详情可参阅:http://blog.sina.com.cn/s/blog_3e28c8a50102v0ck.html

 

二、定义pthon函数

# coding: UTF-8
import urllib.request 
import urllib.parse
import re

# 查询名称   查询条数
def findBaiduUrlList(searchName,number):
    #定义百度搜索请求URL
    url="http://www.baidu.com/s?pn=0&cl=3&rn="+str(number)
    #将中文进行URL编码
    url = url +"&wd="+urllib.parse.quote(searchName)
    #发起request请求,并获取返回结果
    response = urllib.request.urlopen(url)
    #将返回结果进行转换成UTF-8转码
    html = response.read().decode('utf-8')
    #定义截取字符串正则表达式
    splitPattern = re.compile(r'<h3 \D*">')
    requestList = re.split(splitPattern,html)
    
    myUrl=[]
    for c in requestList:
        #清楚换行和前后空格
        c=trim(c)
        if c.startswith('<a') :
            #定义返回结果
            urlObj = ['','']
            urlPattern = re.compile(r'http://www.baidu.com/link.{0,300}target="_blank"')
            urlsMatch = urlPattern.search(c) 
            if urlsMatch: 
                urlObj[1]= trims(urlsMatch.group())            
            
            namePattern = re.compile(r'target="_blank"\s*>.{0,40}</a>')
            nameMatch = namePattern.search(c) 
            if nameMatch: 
                urlObj[0] = trims(nameMatch.group())
            
            myUrl.append(urlObj)
            
        else:
            c = ''
    return myUrl
        
#清除无用字符信息
def trims(str):
    str = str.strip('target="_blank"')
    str = str.replace('<em>','').replace('</em>','').replace('</a>','')
    str = str.replace('>','').replace('"','').replace(' ','').replace('	','')
    return trim(str)
#清除换行和前后空格
def trim(str):
    str = str.replace('\n','').strip()
    return str

   

   python正则表达式可参阅:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html

 

三、调用代码

myUrl = findBaiduUrlList('timerbin',1)

for c in myUrl:
    print(c)

 

四、输出结果

    ['返回链接名称','链接地址']

['TimerBin的博客-ITeye技术网站', 'http://www.baidu.com/link?url=Rvj1VAmkb6527AEXIMQnSKSRFvy4jT0BAYnHjw3Gu4npAccEysMnyRi0fj3Ziwqr']