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()

原文地址:https://www.cnblogs.com/nopnog/p/7156017.html