pyspider

pyspider爬虫类有三个函数:

  • on_start()
  • index_page()
  • detail_page()

爬虫操作流程:

新建爬虫项目,输入链接,然后点击run得到index_page,点击play,调用detail_page()进一步解析。解析后的结果可以用Python语法来提取,也可以用CSS selector来提取HTML elements,推荐使用CSS selector。CSS selector内嵌在response.doc对象中,response.doc()返回pyquery对象response.doc('a[href^="http"]'),pyspider提供了一个CSS selector helper的工具来很容易的生成一个selector pattern。

pyquery的用

pyquery是python的一个爬虫模块,response.doc()返回一个pyquery对象,可以用response.doc()调用pyquery的api。

  • response.doc().items()
  • response.doc().text()

html()和text()获取相应的HTML或文本块

from pyquery import PyQuery as pq
d = pq("<html><title>hello</title></html>")
d = pq(url='http://www.baidu.com') 
p = pq("<head><title>hello</title></head>")
p('head').html()  # 返回<title>hello</title>
p('head').text()  # 返回hello

根据HTML标签来获取元素

d = pq('<div><p>test 1</p><p>test 2</p></div>')   
d('p')    # 返回[<p>,<p>]
print d('p')  # 返回<p>test 1</p><p>test 2</p>
print d('p').html()  # 返回test 1
当获取到的元素不只一个时,html()、text()方法只返回首个元素的相应内容块。eq(index)根据给定的索引号得到指定元素
print d('p').eq(1).html()   # 返回test 2

pyQuery选择

 <dl class="basicInfo-block basicInfo-left">
<dt class="basicInfo-item name">中文名称</dt>
<dd class="basicInfo-item value">北京市</dd>
 ```
 这种class的选择方法:
 ```
eles= d(".basicInfo-block .basicInfo-item")
for e in elements:
    element_doc = PyQuery(e)
    if element_doc.attr("class") == "basicInfo-item name":
        attr_name = element_doc.text()
    elif element_doc.attr("class") == "basicInfo-item value": 

id的选择方法用#id。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值