编写python爬虫基础_Python爬虫建站入门手记(2):编写爬虫

(代码下面会提供)然后呢,就可以玩玩我们的“爬虫”了。

进入python shell

>>> from sfspider import spider

>>> s = spider.SegmentfaultQuestionSpider('1010000002542775')

>>> s.url

>>> 'http://segmentfault.com/q/1010000002542775'

>>> print s.dom('h1#questionTitle').text()

>>> 微信JS—SDK嵌套选择图片和上传图片接口,实现一键上传图片,遇到问题

看吧,我现在已经可以通过爬虫获取segmentfault的提问标题了。下一步,为了简化代码,我把标题,回答等等的属性都写为这个蜘蛛的属性。代码如下

# -*- coding: utf-8 -*-

import requests # requests作为我们的html客户端

from pyquery import PyQuery as Pq # pyquery来操作dom

class SegmentfaultQuestionSpider(object):

def __init__(self, segmentfault_id): # 参数为在segmentfault上的id

self.url = 'http://segmentfault.com/q/{0}'.format(segmentfault_id)

self._dom = None # 弄个这个来缓存获取到的html内容,一个蜘蛛应该之访问一次

@property

def dom(self): # 获取html内容

if not self._dom:

document = requests.get(self.url)

document.encoding = 'utf-8'

self._dom = Pq(document.text)

return self._dom

@property

def title(self): # 让方法可以通过s.title的方式访问 可以少打对括号

return self.dom('h1#questionTitle').text() # 关于选择器可以参考css selector或者jquery selector, 它们在pyquery下几乎都可以使用

@property

def content(self):

return self.dom('.question.fmt').html() # 直接获取html 胆子就是大 以后再来过滤

@property

def answers(self):

return list(answer.html() for answer in self.dom('.answer.fmt').items()) # 记住,Pq实例的items方法是很有用的

@property

def tags(self):

return self.dom('ul.taglist--inline > li').text().split() # 获取tags,这里直接用text方法,再切分就行了。一般只要是文字内容,而且文字内容自己没有空格,逗号等,都可以这样弄,省事。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值