Python实现简单的网页抓取
现在开源的网页抓取程序有很多,各种语言应有尽有。
这里分享一下Python从零开始的网页抓取过程
第一步:安装Python
点击下载适合的版本https://www.python.org/
我这里选择安装的是Python2.7.11
第二步:安装PythonIDE可以任意选择,这里安转的是PyCharm
点击下载地址:http://www.jetbrains.com/pycharm/download/#section=windows
下载安装后可以选择新建一个项目,然后把需要编译的py文件放在项目中。
第三步安装引用包
在编译过程中会发现两个包的引用失败BeautifulSoup和xlwt,前者是对html标记的解析库,后者是可以对分析后的数据导出为excel文件
安装方法一样,这里的安装类似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实现简单的网页抓取的更多相关文章
- Python爬虫之三种网页抓取方法性能比较
下面我们将介绍三种抓取网页数据的方法,首先是正则表达式,然后是流行的 BeautifulSoup 模块,最后是强大的 lxml 模块. 1. 正则表达式 如果你对正则表达式还不熟悉,或是需要一些提 ...
- python网络爬虫-动态网页抓取(五)
动态抓取的实例 在开始爬虫之前,我们需要了解一下Ajax(异步请求).它的价值在于在与后台进行少量的数据交换就可以使网页实现异步更新. 如果使用Ajax加载的动态网页抓取,有两种方法: 通过浏览器审查 ...
- python网络爬虫-静态网页抓取(四)
静态网页抓取 在网站设计中,纯HTML格式的网页通常被称之为静态网页,在网络爬虫中静态网页的数据比较容易抓取,因为说有的数据都呈现在网页的HTML代码中.相对而言使用Ajax动态加载的玩个的数据不一定 ...
- Python3网络爬虫(1):利用urllib进行简单的网页抓取
1.开发环境 pycharm2017.3.3 python3.5 2.网络爬虫的定义 网络爬虫,也叫网络蜘蛛(web spider),如果把互联网比喻成一个蜘蛛网,spider就是一只在网上爬来爬去的 ...
- [Python学习] 简单网络爬虫抓取博客文章及思想介绍
前面一直强调Python运用到网络爬虫方面很有效,这篇文章也是结合学习的Python视频知识及我研究生数据挖掘方向的知识.从而简介下Python是怎样爬去网络数据的,文章知识很easy ...
- 使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎.所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚 ...
- python3一个简单的网页抓取
都是学PYTHON.怎么学都是学,按照基础学也好,按照例子增加印象也好,反正都是学 import urllib import urllib.request data={} data['word']=' ...
- Python selenium自动化网页抓取器
(开开心心每一天~ ---虫瘾师) 直接入正题---Python selenium自动控制浏览器对网页的数据进行抓取,其中包含按钮点击.跳转页面.搜索框的输入.页面的价值数据存储.mongodb自动i ...
- Python开发爬虫之动态网页抓取篇:爬取博客评论数据——通过Selenium模拟浏览器抓取
区别于上篇动态网页抓取,这里介绍另一种方法,即使用浏览器渲染引擎.直接用浏览器在显示网页时解析 HTML.应用 CSS 样式并执行 JavaScript 的语句. 这个方法在爬虫过程中会打开一个浏览器 ...
随机推荐
- 图片上传并回显Ajax异步篇
图片上传并回显Ajax异步篇 图片如何无刷新的上传到服务器呢?继前两篇文章后,我们来实战一下如何无刷新的异步上传图片,我们还是先看一下效果 在实战前呢,我们需要做些准备工作.比如说,了解一下FormD ...
- lesson7cnn architecture-fastai
课程https://v.qq.com/x/page/e0398lijt8h.html 讲解: http://www.sohu.com/a/144583206_697750 resnet可以看作VGG1 ...
- Light OJ 1199:Partitioning Game(SG函数模板)
Alice and Bob are playing a strange game. The rules of the game are: 1. Initially there are n p ...
- Python的方法和语法解释
---------------------------------------------------------------------------------------------------- ...
- C++学习(七)(C语言部分)之 输入
输入学习时的笔记(其实也没什么用,留着给自己看的) 输出是指 把内容打印到控制台窗口 输入是指 把内容输入到程序里 scanfscanf 从键盘获取内容到程序里格式占位符+变量要加取地址符 1.格式占 ...
- python-基础-文件
一.文件操作 打开文件时,需要指定文件路径和以何等方式打开文件, 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r ,只读模式[默认模式 ...
- ionic1页面间传递参数的问题
1. $scope.routeinfo是我要传递的参数--到scheddulcontent这个页面去: $state.go( "scheddulcontent" , { 'rou ...
- python基础(六)——mysql的使用
//验证是否安装mysqldb,这个是用于python连接mysql数据库的接口,而不是我们平时用的mysql import MySQLdb 安装MySQLdb,请访问 http://sourcefo ...
- Apache和Nginx负载均衡集群及测试分析
一.应用场景介绍 本文主要是介绍Apache和Tomcat在Linux环境下的安装讲解以及AJP协议动静分离负载均衡的实现,以及与Nginx负载性能比较.联网安装较为简单,故此处只说脱机的Linux环 ...
- Python 读写
读:read(), read(size), readlines() 写:write() 关闭 close() StingIO, BytesIO() 读文本文件 read() f = open('D:/ ...