pyspider和pyquery总结

1.参考

pyspider作者官网:

pyspider 爬虫教程(一):HTML 和 CSS 选择器

pyspider 爬虫教程(二):AJAX 和 HTTP

pyspider 爬虫教程(三):使用 PhantomJS 渲染带 JS 的页面

CssFullText - CSS选择器 说明

其他:

用pyspider写的爬虫几例

Python爬虫进阶四之PySpider的用法

Python爬虫利器六之PyQuery的用法

2.jQuery 语法

jQuery 是一个 JavaScript 库。jQuery 极大地简化了 JavaScript 编程。
http://www.w3school.com.cn/jquery/jquery_syntax.asp
http://www.w3school.com.cn/jquery/jquery_selectors.asp
http://www.w3school.com.cn/jquery/jquery_ref_selectors.asp

语法     描述
$(this)     当前 HTML 元素
$("p")     所有 <p> 元素
$("p.intro")     所有 class="intro" 的 <p> 元素
$(".intro")     所有 class="intro" 的元素
$("#intro")     id="intro" 的元素
$("ul li:first")     每个 <ul> 的第一个 <li> 元素
$("[href]") 选取所有带有 href 属性的元素。
$("[href=‘#‘]") 选取所有带有 href 值等于 "#" 的元素。
$("div#intro .head")     id="intro" 的 <div> 元素中的所有 class="head" 的元素

jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。!!!!!
$("p").css("background-color","red");

3.pyspider相关

(1) 全局配置,调试时每次修改代码记得更新itag,save,刷新页面再run

class Handler(BaseHandler):
    crawl_config = {
        ‘itag‘: ‘v001‘,
        ‘headers‘: {‘User-Agent‘: ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0‘}
    }

(2) response.save用于传递数据

    file_name = ‘xxx‘
    self.crawl(img.attr.src, callback=self.save_img, save={‘file_name‘: file_name})

def save_img(self,response):
    file_name = response.save[‘file_name‘]  #使用传入的数据

(3) 如果返回结果为多项的json,无法每一项返回一个条目。。。

# https://binux.blog/2015/01/pyspider-tutorial-level-2-ajax-and-more-http/

# 我测试返回的数据不是预期(我想每个电影为显示一行)

# 你想要在界面中显示为多行?这是不行的,results 页面永远只会每个 url 返回一个结果。如果这个结果是一个数组,那么就显示一个数组。

    def json_parser(self, response):
        return [{
            "title": x[‘title‘],
            "rate": x[‘rate‘],
            "url": x[‘url‘]
        } for x in response.json[‘subjects‘]]

(4) 操作pyspider的response.doc

xml_doc = ‘‘‘
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
    <book>
      <title lang="eng">Harry Potter</title>
      <price>29.99</price>
    </book>

    <book>
      <title lang="eng">Learning XML</title>
      <price>39.95</price>
    </book>
</bookstore>‘‘‘

from pyquery import PyQuery
response_doc = PyQuery(xml_doc)  #response_doc即pyspider的response.doc

for each in response_doc(‘book>title‘).items():   #括号内部使用CSS选择tag,.items()用来遍历
    print each.attr.lang
    print each.text()
    print 123

(5) 操作pyspider的response.etree

html_doc = ‘‘‘
<div>
    <ul>
         <li class="item-0">first item</li>
         <li class="item-1"><a href="link2.html">second item</a></li>
         <li class="item-0 active"><a href="link3.html"><span class="bold">third item</span></a></li>
         <li class="item-1 active"><a href="link4.html">fourth item</a></li>
         <li class="item-0"><a href="link5.html">fifth item</a></li>
     </ul>
 </div>‘‘‘

import lxml.html
response_etree = lxml.html.fromstring(html_doc)   #response_etree即pyspider的response.etree

for each in response_etree.xpath(‘//ul/li/a‘):
    print each.xpath(‘./@href‘) #返回列表  [0]可能报错
    print each.text
    print 123
print
for each in response_etree.cssselect(‘div li a‘):
    print each.get(‘href‘)  #推荐或返回None
    print each.text
    print 123
print 

(6) 方便本地调试response.doc 和 response.etree

url = ‘http://movie.douban.com/top250‘
headers={‘user-agent‘: ‘Mozilla/5.0 (Windows NT 6.1; WOW64; rv:54.0) Gecko/20100101 Firefox/54.0‘}
# response_doc = PyQuery(url,headers=headers)

request = urllib2.Request(url,headers=headers)
f = urllib2.urlopen(request)
# Note: this returns a tree, not an element.  Use``parse(...).getroot()`` to get the document root.
response_etree = lxml.html.parse(f).getroot()    #.getroot() 

for each in response_etree.xpath(‘//a[contains(@href,"subject")]‘):
    print each.xpath(‘./@href‘)[0]
print
for each in response_etree.cssselect(‘a[href*="subject"]‘):
    print each.get(‘href‘)
print 

# pyspider源代码为doc=PyQuery(etree)
response_doc = PyQuery(response_etree)

for each in response_doc(‘a[href*="subject"]‘).items():
    print each.attr.href
时间: 2024-07-29 07:44:40

pyspider和pyquery总结的相关文章

【转】CentOS 6.5安装pyspider过程记录

原文地址:http://blog.sina.com.cn/s/blog_48c95a190102wczx.html 1.根据pyspider官方推荐的安装方法,使用pip命令直接安装pyspider # sudo pip install pyspider Installing collected packages: click, itsdangerous, Werkzeug, Flask, chardet, cssselect, lxml, pyquery, ordereddict, backp

pyspider示例代码三:用PyQuery解析页面数据

本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: 本示例主要是PyQuery解析返回的response页面数据.response.doc解析页面数据是pyspider的主要用法,应该熟练掌握基本使用方法.其他返回类型示例见后续文章. pyspider爬取的内容通过回调的参数respon

Python pyspider 安装与开发

PySpider 简介 PySpider是一个国人编写的强大的网络爬虫系统并带有强大的WebUI.采用Python语言编写,分布式架构,支持多种数据库后端,强大的WebUI支持脚本编辑器.任务监视器,项目管理器以及结果查看器. PySpider 来源于以前做的一个垂直搜索引擎使用的爬虫后端.我们需要从200个站点(由于站点失效,不是都同时啦,同时有100+在跑吧)采集数据,并要求在5分钟内将对方网站的更新更新到库中.所以,灵活的抓取控制是必须的. 同时,由于100个站点,每天都可能会有站点失效或

pyspider示例代码二:解析JSON数据

本系列文章主要记录和讲解pyspider的示例代码,希望能抛砖引玉.pyspider示例代码官方网站是http://demo.pyspider.org/.上面的示例代码太多,无从下手.因此本人找出一下比较经典的示例进行简单讲解,希望对新手有一些帮助. 示例说明: pyspider爬取的内容通过回调的参数response返回,response有多种解析方式.1.response.json用于解析json数据2.response.doc返回的是PyQuery对象3.response.etree返回的

pyspider&mdash;爬取视频链接

#!/usr/bin/env python # -*- encoding: utf-8 -*- # Created on 2015-03-20 09:46:20 # Project: fly_spider import re import time #from pyspider.database.mysql.mysqldb import SQL from pyspider.libs.base_handler import * from pyquery import PyQuery as pq c

Pyspider 爬虫教程

Pyspider爬虫教程 一.安装 1. 安装pip (1)准备工作 yum install –y make gcc-c++ python-devel libxml2-devel libxslt-devel (2)安装setuptools https://pypi.python.org/pypi/setuptools/ python setup.py install (3)安装pip https://pypi.python.org/pypi/pip python setup.py install

我们的爬虫从pyspider开始说起(一)

看各种爬虫文献也有好几天了,总是感觉下不了手,总结一句“提笔忘字,总是因为看的太多而写的太少”.所以从现在开始,把看到的想到的,需要总结的东西慢慢的都沉淀下来,扎扎实实的走好每一步. 先来说这几天遇到的各种坑,好不容易找到了关于pyquery和pyspider的各种资料,准备敲到电脑上试试,结果出现了好几个问题.电脑上安装的是python3,代码是python2,转换好了环境,发现目标网站的格式变得,各种苦恼,各种困惑.或许这也是很多学习写爬虫的人总会遇到的问题.从网上下载了几本书,对照着写,结

pyspider脚本编写指南

注意,虽然在本文中会涉及调度策略等内容,但实际执行效果取决于具体策略实现. project 脚本分为不同的 project,不同的 project 之间的任务互相独立,建议为不同的站点建立不同的 project project 属性 group – 分组标识,暂时仅用于区分 name – 脚本的名字,只允许 a-zA-Z0-9_ status – 任务状态,只有处于 DEBUG 和 RUNNING 状态任务才会被执行 TODO – 新建立的脚本所处的状态 STOP – 停止 CHECKING –

Pyspider爬虫教程

Pyspider爬虫教程 一.安装 1. 安装pip (1)准备工作 yum install –y make gcc-c++ python-devel libxml2-devel libxslt-devel (2)安装setuptools https://pypi.python.org/pypi/setuptools/ python setup.py install (3)安装pip https://pypi.python.org/pypi/pip python setup.py install