Python爬虫(十五)_案例:使用bs4的爬虫

本章将从Python案例讲起:所使用bs4做一个简单的爬虫案例,更多内容请参考:Python学习指南

案例:使用BeautifulSoup的爬虫

我们已腾讯社招页面来做演示:http://hr.tencent.com/position.php?&start=10#a

使用BeautifulSoup4解析器,将招聘网页上的职位名称、职位类别、招聘人数、工作地点、时间、以及每个职位详情的点击链接存储出来。

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

from bs4 import BeautifulSoup

import urllib2
import urllib
import json   #使用json格式存储

def tencent():
    url = "http://hr.tencent.com/"

    request = urllib2.Request(url+"position.php?&start=10#a")
    response = urllib2.urlopen(request)

    resHtml = response.read()

    output = open('tencent.json', 'w')

    html = BeautifulSoup(resHtml, 'lxml')

    #创建CSS选择器
    result = html.select('tr[class="even"]')
    result2 = html.select('tr[class="odd"]')
    result += result2

    print(result)
    items = []
    for site in result:
        item = {}

        name = site.select('td a')[0].get_text()
        dataLink = site.select('td a')[0].attrs['href']
        catalog = site.select('td')[1].get_text()
        recruitNumber = site.select('td')[2].get_text()
        workLocation = site.select('td')[3].get_text()
        publishTime = site.select('td')[4].get_text()

        item['name'] = name
        item['datailLink'] = url + dataLink
        item['catalog'] = catalog
        item['recruitNumber'] = recruitNumber
        item['publishTime'] = publishTime

        items.append(item)
    #禁用ascii编码,按utf-8编码
    line = json.dumps(items, ensure_ascii = False)

    output.write(line.encode('utf-8'))

    output.close()

if __name__ == '__main__':
    tencent()
时间: 2024-10-27 13:24:13

Python爬虫(十五)_案例:使用bs4的爬虫的相关文章

python 归纳 (十五)_多进程使用Pool

1 usePool.py #coding: utf-8 """ 学习进程池使用 multiprocessing.Pool 总结: 1. Pool 池用于处理 多进程,并不是多线程 2. 池有大小的概念 3. 并不是所有的子进程添加完了,才开始启动子进程. 当第一个进程添加到池中的时候,马上就启动了 使用: 1. 创建进程池对象 pool = multiprocessing.Pool(processes = 3) 2. 往池中添加进程 主要:pool.apply_async(f

python第十五天

python第十五天 今日内容 常用模块的介绍: time,datetime os,sys hashlib,json,pickle,collections time:和时间相关 封装了获取时间戳和字符串形式的时间的一些方法. time.time():获取时间戳 time.gmtime([seconds]):获取格式化时间对象:是九个字段组成的 time.localtime([seconds]):获取格式化时间对象:是九个字段组成的 time.mktime(t):时间对象 -> 时间戳 time.

Python爬虫(十八)_多线程糗事百科案例

多线程糗事百科案例 案例要求参考上一个糗事百科单进程案例:http://www.cnblogs.com/miqi1992/p/8081929.html Queue(队列对象) Queue是python中的标准库,可以直接import Queue引用:队列时线程间最常用的交互数据的形式. python下多线程的思考 对于资源,加锁是个重要的环节.因为python原生的list,dict等,都是not thread safe的.而Queue,是线程安全的,因此在满足使用条件下,建议使用队列 初始化:

Python学习笔记十五_开发接口

1.mock接口,模拟一些接口,在别的接口没有开发好的时候,你需要用它 假的支付接口,模拟支付成功 2. 3.查看数据,避免直接操作数据库flask web开发框架 实例化server 装饰器,下面的函数变为一个接口 启动服务 import flask,json #__name__代表当前这个python文件 server = flask.Flask(__name__)#实例化server,把当前这个python文件,当做一个服务 def my_db(sql): import pymysql c

python学习十五天

内置函数二 1.lamda匿名函数 2. sorted() 3. filter() 4. map() 5. 递归函数 一. lamda匿名函数 为了解决一些简单的需求而设计的一句话函数 # 计算n的n次方 def func(n): eturn n**n print(func(10)) f = lambda n: n**n print(f(10)) lambda表示的是匿匿名函数. 不需要用def来声明, 一句句话就可以声明出一个函数 语法: 函数名 = lambda 参数: 返回值 注意: 1.

selenium python (十五)控制滚动条操作

#!/usr/bin/python# -*- coding: utf-8 -*-__author__ = 'zuoanvip' #一般用到操作滚动条的两个场景    #注册时的法律条文的阅读,判断用户是否阅读完成的标准是:滚动条是否拉到最下方    #要操作的页面元素不在视觉范围,无法进行操作,需要拖动滚动条    #用于标识滚动条位置的代码        #<body >        #<body > from selenium import webdriverimport 

Python学习十五:sorted()

sorted()是Python内置的一个高阶函数,可以实现对list的排序,它还可以接收一个比较函数来实现自定义的排序. 现在有一个list : [36, 5, 12, 9, 21] 我们分别对这个list进行如下操作: 1.对list进行排序,使用sorted直接排序即可: print sorted([36, 5, 12, 9, 21]) 2.对list进行倒序排序,可以自定一个方法: def reversed_cmp(x, y): if x > y: return -1 if x < y:

笨办法学Python(十五)

习题 15: 读取文件 你已经学过了 raw_input 和 argv,这些是你开始学习读取文件的必备基础.你可能需要多多实验才能明白它的工作原理,所以你要细心做练习,并且仔细检查结果.处理文件需要非常仔细,如果不仔细的话,你可能会吧有用的文件弄坏或者清空.导致前功尽弃. 这节练习涉及到写两个文件.一个正常的 ex15.py 文件,另外一个是 ex15_sample.txt,第二个文件并不是脚本,而是供你的脚本读取的文本文件.以下是后者的内容: 1 This is stuff I typed i

python第九十五天--js正则

定义正则表达式 /.../ 用于定义正则表达式 /.../g 表示全局匹配 /.../i 表示不区分大小写 /.../m 表示多行匹配 JS正则匹配时本身就是支持多行,此处多行匹配只是影响正则表达式^和$,m模式也会使用^$来匹配换行的内容) var pattern = /^Java\w*/gm; var text = "JavaScript is more fun than \nJavaEE or JavaBeans!"; result = pattern.exec(text) re