【Python】网络爬虫(一):pyquery一瞥

1.pyquery简介

python中的pyquery模块语法与jquery相近,可用来解析HTML文件。官方文档地址:https://pythonhosted.org/pyquery/ 。通过HTML中的标签、id、给定的索引等来获取元素,使得解析HTML文件极为方便。

2.实例

2.1 爬取豆瓣电影页面中主演

右键chrome中的审查元素,观察到主演的标签为<a href="/celebrity/1005773/" rel="v:starring">

为找出主演,需要把带有rel="v:starring"的所有a标签找出来

# -*- coding: utf-8 -*-
from pyquery import PyQuery as pq

#读取Batman Begins页面
doc = pq(url="http://movie.douban.com/subject/1309069/")

#遍历starring节点
starring = doc("a[rel=‘v:starring‘]").map(lambda i,e:pq(e).text())

#打印
print "<<"+doc("span[property=‘v:itemreviewed‘]").text()+u">>的主演\n"
for i in starring:
      print i.encode(‘utf-8‘)

得到结果

2.2 百度贴吧爬虫

爬虫功能:将楼主的所发内容保存在本地txt文件中。

分析页面地址:只看楼主页面是贴子地址后加“?see_lz=1”,到第二页时,页面再加上“&pn=2”。分析页面元素:楼主所发内容正则表达式为id="post_content.*?>(.*?)

纯python版的百度贴吧爬虫(参看这里

# -*- coding: utf-8 -*-
#--------------------------------
#   program: 百度贴吧爬虫
#   date: 2014.4.29
#--------------------------------

from pyquery import PyQuery as pq
import urllib2
import re

class tiebaSpider:
    def __init__(self,link):
        #只看楼主页面
        self.url = link+‘?see_lz=1‘
        #读取页面
        self.raw_html = urllib2.urlopen(self.url).read().decode(‘gbk‘)
        #获得贴子标题
        self.title = re.findall(‘<h1.*?>(.*?)</h1>‘,self.raw_html)[0]
        #总共页数
        self.total_pages = int(re.findall(r‘class="red">(\d+?)<‘,self.raw_html)[0])
        self.contents = []

    def get_contents(self):
        """获取所有页面的内容"""

        page = self.url+‘&pn=‘
        for i in range(1,self.total_pages+1):
            #爬取每个页面
            print u‘正在爬取第%d页内容...‘ %i
            raw_page = urllib2.urlopen(page+str(i)).read().decode(‘gbk‘)
            raw_contents = re.findall(‘id="post_content.*?>(.*?)</div>‘,raw_page)
            #处理页面,获得楼主的post cotent
            dealed_contents=pq(raw_contents).map(lambda i,e:pq(e).text())

            for content in dealed_contents:
                content = (content+‘\n\n‘).encode(‘utf-8‘) #忘加encode,调试了许久
                self.contents.append(content)

    def save_contents(self):
        """保存content,写入txt文件中"""

        self.get_contents()
        f = open(self.title+‘.txt‘,‘w+‘)
        f.writelines(self.contents)
        f.close()

def main():
    print u"请输入百度贴吧贴子链接"
    link = str(raw_input())
    spider = tiebaSpider(link)
    spider.save_contents()

if __name__ == "__main__":
    main()

【Python】网络爬虫(一):pyquery一瞥,码迷,mamicode.com

时间: 2024-08-24 11:37:44

【Python】网络爬虫(一):pyquery一瞥的相关文章

python网络爬虫学习资料

第一:Python爬虫学习系列教程(来源于某博主:http://cuiqingcai.com/1052.html) Python版本:2.7 整体目录: 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库的高级用法 5. Python爬虫入门五之URLError异常处理 6. Python爬虫入门六之Cookie的使用 7. Python爬虫入门七之正则

爬虫学习 08.Python网络爬虫之图片懒加载技术、selenium和PhantomJS

爬虫学习 08.Python网络爬虫之图片懒加载技术.selenium和PhantomJS 引入 今日概要 图片懒加载 selenium phantomJs 谷歌无头浏览器 知识点回顾 验证码处理流程 今日详情 动态数据加载处理 一.图片懒加载 什么是图片懒加载? 案例分析:抓取站长素材http://sc.chinaz.com/中的图片数据 #!/usr/bin/env python # -*- coding:utf-8 -*- import requests from lxml import

Python网络爬虫

http://blog.csdn.net/pi9nc/article/details/9734437 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止. 如果把整个互联网当成一个网站,那么

python网络爬虫之cookie的使用方法汇总

在编写python网络爬虫时,除了要考虑到爬虫的异常处理问题,我们是否还会考虑到cookie的使用呢?在使用cookie时,有想过为什么要使用cookie吗?一起来看看吧. Cookie,指某些网站为了辨别用户身份.进行session跟踪而储存在用户本地终端上的数据(通常经过加密)比如说有些网站需要登录后才能访问某个页面,在登录之前,你想抓取某个页面内容是不允许的.那么我们可以利用Urllib2库保存我们登录的Cookie,然后再抓取其他页面就达到目的了. 在此之前呢,我们必须先介绍一个open

Python网络爬虫与信息提取(中国大学mooc)

目录 目录 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 目标获取淘宝搜索页面的信息 理解淘宝的搜索接口翻页的处理 技术路线requests-refootnote 代码如下 股票数据定向爬虫 列表内容 爬取网站原则 代码如下 代码优化 Python网络爬虫与信息提取 淘宝商品比价定向爬虫 股票数据定向爬虫 1. 淘宝商品比价定向爬虫 功能描述 目标:获取淘宝搜索页面的信息 理解:淘宝的搜索接口翻页的处理 技术路线:requests-re[^footnote]. 代码如下: #CrowTa

2017.07.28 Python网络爬虫之爬虫实战 今日影视2 获取JS加载的数据

1.动态网页指几种可能: 1)需要用户交互,如常见的登录操作: 2)网页通过js / AJAX动态生成,如一个html里有<div id="test"></div>,通过JS生成<divid="test"><span>aaa</span></div>: 3)点击输入关键字后进行查询,而浏览器url地址不变 2.想用Python获取网站中JavaScript返回的数据,目前有两种方法: 第一种方法

[Python]网络爬虫(三):异常的处理和HTTP状态码的分类(转)

先来说一说HTTP的异常处理问题.当urlopen不能够处理一个response时,产生urlError.不过通常的Python APIs异常如ValueError,TypeError等也会同时产生.HTTPError是urlError的子类,通常在特定HTTP URLs中产生. 1.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生. 这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以理解为不可变的数组),

[Python]网络爬虫(四):Opener与Handler的介绍和实例应用(转)

在开始后面的内容之前,先来解释一下urllib2中的两个个方法:info and geturl urlopen返回的应答对象response(或者HTTPError实例)有两个很有用的方法info()和geturl() 1.geturl(): 这个返回获取的真实的URL,这个很有用,因为urlopen(或者opener对象使用的)或许会有重定向.获取的URL或许跟请求URL不同. 以人人中的一个超级链接为例, 我们建一个urllib2_test10.py来比较一下原始URL和重定向的链接: [p

Python]网络爬虫

Originated From: http://blog.csdn.net/pi9nc/article/details/9734437#comments [Python]网络爬虫(一):抓取网页的含义和URL基本构成 一.网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字. 把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛.网络蜘蛛是通过网页的链接地址来寻找网页的. 从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址, 然后通过这些

Python网络爬虫实战视频教程

Python网络爬虫实战教程(全套完整版) 课程观看地址:http://www.xuetuwuyou.com/course/168课程出自学途无忧网:http://www.xuetuwuyou.com 课程目录:课时1:课程介绍课时2:Python初识课时3:Python语法基础 课时4:Python控制流与小实例 课时5:答疑环节 课时6:Python函数详解 课时7:Python模块实战 课时8:Python文件操作实战 课时9:Python异常处理实战 课时10:Python面向对象编程