开始进公司实习的一个任务是整理一个网页页面上二级链接的内容整理到EXCEL中,这项工作把我头都搞大了,整理了好几天,实习生就是端茶送水的。前段时间学了爬虫,于是我想能不能用python写一个爬虫一个个页面抓取然后自动存到EXCEL中。今天完成了第一个页面的处理,抓取到了所有的二级链接。

要爬取初始网页:http://www.zizzs.com/zt/zzzsjz2017/###

任务:将招生简章中2017对应的二级页面的招生计划整理到EXCEL

初始目标:爬取http://www.zizzs.com/zt/zzzsjz2017/###  中招生简章2017年对应的二级链接,爬取到二级链接之后再接着往下爬取二级页面的表格,并存到EXCEL中.

我打算用BeautifulSoup来解析网页页面.

BeautifulSoup是Python中的一个HTML/XML解析器,通过定位HTML标签来格式化和组织复杂网络. 它可以很好的处理不规范标记并生成剖析树(parse tree),提供简单又常用的导航(navigating),搜索以及修改剖析树的操作.

中文文档: https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh/

首先看下我要爬取的网页源码:

可以看见我要爬取的表格在图中红框圈住的页面中. 可以用BeautifulSoup的find()方法使用标签和属性定位这个表格.

找到表格所在位置之后可以看到我要找的页面都在class="colspan w9 ds2017" 中, 借用findAll()定位这个内容.

但是print出来是整个内容,而我要提取的是href中的页面链接.

对于这个问题我使用python的正则表达式re.findall()方法来提取链接.

使用方法: re.findall(patternstringflags=0),第一个参数是你要查找的字符串模式可以用正则表达式设计,第二是整个字符串

要了解python字符串可以看看这篇博文.

http://blog.csdn.net/eastmount/article/details/51082253

可以观察到我要查找的字符串有些是以空格开头的,有些不是, 我的正则表达式为:

最后成功抓取到自己想要的链接:

后面就是用这些链接去抓取表格内容的各个学校的招生信息了。

贴上源码:

# _*_ coding: UTF-8 _*_
from urllib import request
from bs4 import BeautifulSoup
import re
url = 'http://www.zizzs.com/zt/zzzsjz2017/###'
# 这一段是将python urllib伪装成chrome 浏览器,防止被服务器拒绝,原因在我另一篇文章python文章总结里面
def getHTML(url):
headers = {'User-Agent':'User-Agent:Mozilla/5.0(Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
req = request.Request(url,headers = headers)
return request.urlopen(req)
html = getHTML(url) #得到BeautifulSoup对象
bsObj = BeautifulSoup(html,'lxml')
foundLinks = [] #成功找到初始页面的所有二级链接
substr = re.compile("(\s)*(http:\/\/www\.zizzs\.com\/c\/201702\/[0-9]+\.html)")
for link in bsObj.find("div",{"id":"tab2_content"}).findAll("",{"class":"colspan w9 ds2017"}):
#print(str(link))
if len(re.findall(substr,str(link))) != 0:
foundLinks.append(re.findall(substr,str(link))[0][1]) print(foundLinks)

整个程序虽然比较简单,但是自己对BeautifulSoup和正则表达式还不是很熟悉,还是调试了很久.

【python爬虫和正则表达式】爬取表格中的的二级链接的更多相关文章

  1. 【转载】教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    原文:教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神 本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http:/ ...

  2. 教你分分钟学会用python爬虫框架Scrapy爬取心目中的女神

    本博文将带领你从入门到精通爬虫框架Scrapy,最终具备爬取任何网页的数据的能力.本文以校花网为例进行爬取,校花网:http://www.xiaohuar.com/,让你体验爬取校花的成就感. Scr ...

  3. Python 爬虫入门之爬取妹子图

    Python 爬虫入门之爬取妹子图 来源:李英杰  链接: https://segmentfault.com/a/1190000015798452 听说你写代码没动力?本文就给你动力,爬取妹子图.如果 ...

  4. Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...

  5. Python爬虫实例:爬取B站《工作细胞》短评——异步加载信息的爬取

    很多网页的信息都是通过异步加载的,本文就举例讨论下此类网页的抓取. <工作细胞>最近比较火,bilibili 上目前的短评已经有17000多条. 先看分析下页面 右边 li 标签中的就是短 ...

  6. Python爬虫实例:爬取猫眼电影——破解字体反爬

    字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...

  7. Python爬虫实例:爬取豆瓣Top250

    入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...

  8. python爬虫-基础入门-爬取整个网站《3》

    python爬虫-基础入门-爬取整个网站<3> 描述: 前两章粗略的讲述了python2.python3爬取整个网站,这章节简单的记录一下python2.python3的区别 python ...

  9. python爬虫-基础入门-爬取整个网站《2》

    python爬虫-基础入门-爬取整个网站<2> 描述: 开场白已在<python爬虫-基础入门-爬取整个网站<1>>中描述过了,这里不在描述,只附上 python3 ...

随机推荐

  1. poj2406 Power Strings (kmp 求最小循环字串)

    Power Strings   Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 47748   Accepted: 19902 ...

  2. uboot的readme导读

    UBOOT的移植其实并没有想象中的难,这主要归功于众多的工程师已经将常见的平台代码写入了UBOOT,我们所要做的就是一点小小的更改,在网上看了很多相关的移植,也听到有人说其实看了UBOOT的readm ...

  3. 洛谷——T P2136 拉近距离

    https://www.luogu.org/problem/show?pid=2136 题目背景 我是源点,你是终点.我们之间有负权环. ——小明 题目描述 在小明和小红的生活中,有N个关键的节点.有 ...

  4. 王立平--EditText实现单行显示,左側图标,提示信息

    <EditText            android:layout_width="200dp"           android:layout_height=" ...

  5. hdu 5077 NAND(打表)2014 Asia regional 鞍山站 H题

    题目链接:点击打开链接 题意:就是一个按位运算的一个函数.问最少经过多少步运算能够得到给定数. 思路:不是我投机取巧想打表.是特么这题仅仅能打表.. .打表思想用能够得到的数的集合表示状态bfs:最后 ...

  6. 基于Dragon Board410c 的智能机器人预研-语音识别及定位

    转自:http://www.csdn.net/article/a/2016-01-06/15833642 一.前言 机器人是一种可编程和多功能的.用来搬运材料.零件.工具的操作机,智能机器人则是一个在 ...

  7. java发送邮件带附件

    package com.smtp; import java.util.Vector; public class MailBean { private String to; // 收件人 private ...

  8. 揭秘Product Hunt怎样运用邮件崛起

    Product Hunt正被硅谷热议,而大家谈论Product Hunt时,经常涉及邮件营销. Product Hunt由Ryan Hoover 在2013年11月创立.鼓舞人们发现和分享新产品的站点 ...

  9. Linux网络编程(附1)——封装read、write

    原打算实践简单的模型的时候,主要专注于基本的模型,先用UNIX I/O糊弄下,可是未封装的read和write用起来实在心累,还是直接用前辈们已经实现好的高级版本号read.write. UNIX I ...

  10. zzulioj--1609--求和(数学规律)

     1609: 求和 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 209  Solved: 67 SubmitStatusWeb Board De ...