zoukankan      html  css  js  c++  java
  • Python 爬虫

    爬虫的起步,先利用request模块来写个百度接口的调用

    import requests
    url_pre = 'http://api.map.baidu.com/location/ip'
    ak = 'QspXzwz6rO3IviR33HDf8Czv05pR7XoT'
    ip = raw_input('input your ip: ')

    url = '%s?ak=%s&ip=%s'%(url_pre,ak,ip)

    res = requests.get(url)
    print res.json()['content']['address']

    用来获取ip的定位

    下面来爬一下豆瓣top250

    import requests
    from pyquery import PyQuery as pq

    url = 'https://movie.douban.com/top250'
    page_content = requests.get(url).text         #获取页面的代码,相当于邮件查看源代码

    for info in pq(page_content).find('.item'):   #找到class为item,他是包含电影名字和评分的最小块,如图1
        print pq(info).find('.title').html()      #找包含电影名字的class
        print pq(info).find('.rating_num').html() #找包含电影评分的class

    运行结果:

    肖申克的救赎
    9.6
    霸王别姬
    9.5
    这个杀手不太冷
    9.4
    阿甘正传
    9.4
    美丽人生
    9.5
    千与千寻
    9.2
    辛德勒的名单
    9.4
    泰坦尼克号
    9.2
    盗梦空间
    9.2
    机器人总动员
    9.3
    海上钢琴师
    9.2

    ......

    图解1:

        

     再来个例子:

    12 url = 'https://movie.douban.com/chart'
    13
    14 page_content = requests.get(url).text
    15 for info in pq(page_content).find('.item'):
    16 print pq(info).find('.pl2').find('a').text().replace(' ','').split('/')[0]

     #这里如果用find('a').html()   会把span的内容也显示出来,用text则会过滤掉这已部分。

    已面向对象的方式来改写

    import requests
    from pyquery import PyQuery as pq

    #url = 'https://movie.douban.com/top250'
    #page_content = requests.get(url).text
    #
    #for info in pq(page_content).find('.item'):
    # print pq(info).find('.title').html()
    # print pq(info).find('.rating_num').html()


    #url = 'https://movie.douban.com/chart'

    #page_content = requests.get(url).text
    #for info in pq(page_content).find('.item'):
    # print pq(info).find('.pl2').find('a').text().replace(' ','').split('/')[0]

    class DoBan:
      def __init__(self,num):
         self.num = num
         self.url = 'https://movie.douban.com/top250?start=%s'


      def get_start_url(self):
         return range(0,self.num,25)

      def download(self,url):
         content = requests.get(url).text
         self.parse(content)


      def parse(self,content):
         for info in pq(content).find('.item'):
         tmp = pq(info)
         print tmp.find('.title').html()
         print ' '*4,tmp.find('.rating_num').html(),tmp.find('.inq').html()


      def start(self):
         for start in self.get_start_url():
         url = self.url%(start)
         self.download(url)


    db = DoBan(100)
    db.start()

  • 相关阅读:
    序列化流与反序列化流
    io流之Properties类
    io流之转换流与缓冲流
    Io流之File概述(递归/字节流/字符流)
    基本数据类型包装/System类/Math类/Arrays类
    Date类概述与Calendar类概念
    String类型概述
    20180926 小小插件 (弹窗)
    20180901 文件加载 错误处理 错误的触发
    20180828 优化留言板 功能(增加 删除 修改 查看)!
  • 原文地址:https://www.cnblogs.com/nopnog/p/7156017.html
Copyright © 2011-2022 走看看