现在开源的网页抓取程序有很多,各种语言应有尽有。

这里分享一下Python从零开始的网页抓取过程

第一步:安装Python

点击下载适合的版本https://www.python.org/

我这里选择安装的是Python2.7.11

第二步:安装PythonIDE可以任意选择,这里安转的是PyCharm

点击下载地址:http://www.jetbrains.com/pycharm/download/#section=windows

下载安装后可以选择新建一个项目,然后把需要编译的py文件放在项目中。

第三步安装引用包

在编译过程中会发现两个包的引用失败BeautifulSoup和xlwt,前者是对html标记的解析库,后者是可以对分析后的数据导出为excel文件

BeautifulSoup下载

xlwt下载

安装方法一样,这里的安装类似Linux依赖安装包一样。

常用的安装步骤

1.在系统中PATH环境变量添加Python安装目录

2.将需要安装的包解压后打开CMD命令窗口,分别切换至安装包目录,运行分别运行python setup.py build和python setup.py install

这样两个包就安装完成了

第四步编译运行

以下是编译执行的抓取代码,这里可以根据实际需求进行改动。简单的实现网页读取,数据抓取就挺简单的。

#coding:utf-8
import urllib2
import os
import sys
import urllib
import string
from bs4 import BeautifulSoup #导入解析html源码模块
import xlwt #导入excel操作模块
row = 0 style0 = xlwt.easyxf('font: name Times SimSun')
wb = xlwt.Workbook(encoding='utf-8')
ws = wb.add_sheet('Sheet1')
for num in range(1,100):#页数控制
url = "http://www.xxx.com/Suppliers.asp?page="+str(num)+"&hdivision=" #循环ip地址
header = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
"Referer":"http://www.xxx.com/suppliers.asp"
}
req = urllib2.Request(url,data=None,headers=header)
ope = urllib2.urlopen(req)
#请求创建完成
soup = BeautifulSoup(ope.read(), 'html.parser')
url_list = [] #当前url列表 for _ in soup.find_all("td",class_="a_blue"):
companyname=_.a.string.encode('utf-8').replace("\r\n"," ").replace('|','')#公司名称
detailc=''#厂商详情基本信息
a_href='http://www.xxx.com/'+ _.a['href']+'' #二级页面
temphref=_.a['href'].encode('utf-8')
if temphref.find("otherproduct") == -1:
print companyname
print a_href
reqs = urllib2.Request(a_href.encode('utf-8'), data=None, headers=header)
opes = urllib2.urlopen(reqs)
deatilsoup = BeautifulSoup(opes.read(), 'html.parser')
for content in deatilsoup.find_all("table", class_="zh_table"): #输出第一种联系方式详情
detailc=content.text.encode('utf-8').replace("\r\n", "")
#print detailc # 输出详细信息
row = row + 1 # 添加一行
ws.write(row,0,companyname,style0) # 第几行,列1 列2...列n
ws.write(row,1, detailc,style0)
print '正在抓取'+str(row)
wb.save('bio-equip11-20.xls')
print '操作完成!'

运行结束则会在PycharmProjects项目的目录下创建已经采集好的数据保存excel文件。

Python实现简单的网页抓取的更多相关文章

  1. Python爬虫之三种网页抓取方法性能比较

    下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块. 1. 正则表达式   如果你对正则表达式还不熟悉,或是需要一些提 ...

  2. python网络爬虫-动态网页抓取(五)

    动态抓取的实例 在开始爬虫之前,我们需要了解一下Ajax(异步请求).它的价值在于在与后台进行少量的数据交换就可以使网页实现异步更新. 如果使用Ajax加载的动态网页抓取,有两种方法: 通过浏览器审查 ...

  3. python网络爬虫-静态网页抓取(四)

    静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...

  4. Python3网络爬虫(1):利用urllib进行简单的网页抓取

    1.开发环境 pycharm2017.3.3 python3.5 2.网络爬虫的定义 网络爬虫,也叫网络蜘蛛(web spider),如果把互联网比喻成一个蜘蛛网,spider就是一只在网上爬来爬去的 ...

  5. [Python学习] 简单网络爬虫抓取博客文章及思想介绍

            前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...

  6. 使用Python编写简单网络爬虫抓取视频下载资源

    我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎.所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...

  7. python3一个简单的网页抓取

    都是学PYTHON.怎么学都是学,按照基础学也好,按照例子增加印象也好,反正都是学 import urllib import urllib.request data={} data['word']=' ...

  8. Python selenium自动化网页抓取器

    (开开心心每一天~ ---虫瘾师) 直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击.跳转页面.搜索框的输入.页面的价值数据存储.mongodb自动i ...

  9. Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取

    区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...

随机推荐

  1. animate.css动画

    添加类名的时间不要只添加动画的类名,也要加上animated,使用的时间可以把自己需要的效果复制出来

  2. 在java中(==)的用法

  3. LeetCode - Is Graph Bipartite?

    Given an undirected graph, return true if and only if it is bipartite. Recall that a graph is bipart ...

  4. 【BZOJ1030】【JSOI2007】文本生成器

    我现在连AC自动姬都不会,怎么办嘛QAQ 原题: JSOI交给队员ZYX一个任务,编制一个称之为“文本生成器”的电脑软件:该软件的使用者是一些低幼人群,他们现在使用的是GW文本生成器v6版.该软件可以 ...

  5. nodejs-hook 开发

    nodejs require hook 功能很强大,我们可以用来将不支持的数据文件,直接使用require 进行加载,同时 我们可以方便的进行代码的预编译(比如babel 的组件) 为了方便使用npm ...

  6. python结合redis模拟队列

    实在无聊就写了个很小的python程序用来实现模拟redis队列的代码如下: redis_lpush.py   #!/usr/bin/python3 import time import redis ...

  7. resolve和reject不会终结Promise的参数函数的执行

  8. JavaScript Closures 闭包

    在一些编程语言中, 当我们执行完成function中的局部代码仅在函数执行期间可运行. 但是JS 事不一样的 闭包总结来说, 就是innerFunction 总是有使用outer function 的 ...

  9. 3个问题:MySQL 中 character set 与 collation 的理解;utf8_general_ci 与 utf8_unicode_ci 区别;uft8mb4 默认collation:utf8mb4_0900_ai_ci 的含义

    MySQL 中 character set 与 collation 的理解 出处:https://www.cnblogs.com/EasonJim/p/8128196.html 推荐: 编码使用 uf ...

  10. toString() 和 toLocaleString() 的区别

    toString() 和 toLocaleString() 的区别 table th:nth-of-type(4) { width: 400px; } 区别项 toString() toLocaleS ...