美文网首页实战-python
实战-爬虫-1-获取演员的名单

实战-爬虫-1-获取演员的名单

作者: lip136 | 来源:发表于2018-09-30 12:45 被阅读0次

    这是爬虫的第一篇,做数据开发一定要先有数据才可以进行一系列的算法研究,数据决定了算法的上限。

    python模块

    1. requests
    2. lxml

    安装方法

    pip install requests, lxml
    

    爬虫过程

    请求网页

    我想要得到的是演员名单,只需要名字即可。

    # encoding:utf-8
    import requests
    from lxml import etree
    url = 'http://g.manmankan.com/dy2013/mingxing/index_2.shtml'
    response = requests.get(url)
    html = response.text
    print html #这是获取的html文件,你可以查看到你所需要的内容
    

    获取单页所需信息

    这里使用解析的方法是xpath,xpath使用方法可以看工具篇。浏览器点击右键检查,可以选择演员名字看到


    图片
    selector = etree.HTML(html)
    person = selector.xpath('//li/span/a/text()')
    

    循环多页信息

    这个网站很简单,只需要改变index_2后面的数字即可。所以一个循环语句就好了。

    保存到文档

    通过open函数写入txt文件即可。

    with open('./actors.txt', 'w') as f:
        f.write(person)
        f.close()
    

    完整代码

    # encoding:utf-8
    import requests
    from lxml import etree
    actors = []
    def get_person(index):
        url = 'http://g.manmankan.com/dy2013/mingxing/index_{}.shtml'.format(index)
        response = requests.get(url)
        html = response.text
        selector = etree.HTML(html)
        person = selector.xpath('//li/span/a/text()')
        return person
    
    def read_txt(actors_china):
        with open('./actors.txt', 'w') as f:
            for i in actors_china:
                f.write(i.encode('utf8') + '\n')
    
    def main():
        for index in range(2, 40):
            actor = get_person(index)
            actors.append(actor)
        actors_china = []
        for i in actors:
            for j in i:
                a = j.encode('iso-8859-1').decode('gbk') #编码问题,可以自己去掉试试
                actors_china.append(a)
        print len(actors_china)
        read_txt(actors_china)
    
    if __name__ == '__main__':
        main()
    

    总结

    主要是学会两点

    1. xpath的使用
    2. python的编码

    相关文章

      网友评论

        本文标题:实战-爬虫-1-获取演员的名单

        本文链接:https://www.haomeiwen.com/subject/tahwoftx.html