Python爬虫初级

介绍入门级的网页爬取方法。以爬取歌手信息为例。

研究网页

  1. 打开谷歌浏览器,按F12,进入开发人员界面

  2. 选择Elements选择Elements

  3. 输入要爬取歌手名称(“周杰伦” 或者 “周杰伦 歌曲”)

  4. 点击开发人员界面左上角的鼠标标志,在网页页面点击要爬取的内容块,这时,在开发人员界面会定位到相关的h5代码段,这样我们就大体地位到了想要的代码段。下面想获取搜索结果的第一条中的所有信息,可在开发这界面拖动鼠标,在不同位置上网页会有不同显示,这样我们就可以准确定位到我们想要的代码块。
    在这里插入图片描述 定位代码块

  5. 可以看到第一条信息所在的代码快位置为 <div class="… id = “1”…>,我们就可以根据这个id号写代码截取信息

Python代码

import requests
import lxml.html as H                                                                                                                                                                    import sys 
import os
import json
headers = { 
    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36',
    #'Cookie':'id5AA=c5/nn1vC8o4vZul8i2zJAg==; Hm_lvt_b4a22b2e0b326c2da73c447b951236d6746=1539760959; xxzl_deviceid=F 3hTrG /V/iuVTvmXAxCandrfhokre4OxgMOfI7Tgxtvi1aO/IsvAfVCg7v1KEn;'
}

def get_code(singer_name):
    ''' 
    爬虫函数 爬取搜索页面内容
    '''
    url = 'https://www.baidu.com/s?wd=%s&pn=%s' % (singer_name, 1)
    try:
        r = requests.get(url, headers=headers)
        r.raise_for_status()
        r.encoding = r.apparent_encoding
    except:
        print('网页获取失败')
        return keyword,0
    else:
        code = parse(r.content)
        return code

def parse(html):
    doc = H.document_fromstring(html)
    #h5 = ''.join(doc.xpath('string(.)'))   # 输出整个页面信息
    xpath1 = '//div[@id="1"]//text()'
    id1 = doc.xpath(xpath1)     
    id1 = ''.join(id1)                        
    print(id1)                       # 输出第一条结果<div id="1"> 中的所有信息
    _xpath = '//div[@id="1"]/h3/a//text()'
    datas = doc.xpath(_xpath)
    first_title = ''.join(datas)          
    print(first_title)                      # 输出第一条标题的信息
    _xpath = '//div[@id="1"]/h3/a | //div[@id="2"]/h3/a | //div[@id="3"]/h3/a | //div[@id="4"]/h3/a | //div[@id="5"]/h3/a'
    datas = doc.xpath(_xpath)
    for data in datas:
        title = ''.join(data.xpath('string(.)')) 
        print(title)                 # 输出前5条搜索结果的信息
    return first_title
def main():
    get_code('周杰伦')

if __name__ == '__main__':
    main()    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值