python之爬取网页数据总结(一)
今天尝试使用python,爬取网页数据。因为python是新安装好的,所以要正常运行爬取数据的代码需要提前安装插件。分别为requests Beautifulsoup4 lxml 三个插件。
因为配置了环境变量,可以cmd命令直接安装。假如电脑上有两个版本的python,建议进入到目录安装。
安装的命令为 pip install requests(Beautifulsoup4 /lxml ) 三条分别执行。
安装结束,可以尝试网上一些简单的例子,明白了解 Beautifulsoup4 解析网页所使用的方式。这个可以避开正则表达式,个人感觉学起来很方便。
soup.select('') 这个方法就是解析网页代码,提取其中某一部分。该方法的使用可以类比java 爬虫的webmagic jsoupXpath-0.1.1.jar 的使用方法。
主要理解这个方法之后就可以看懂大部分代码。
以下为网上的例子代码,比较简单,适合学习。
import requests
from bs4 import BeautifulSoup
def getHTMLText(url):
try:
r = requests.get(url, timeout = 30)
r.raise_for_status()
#r.encoding = 'utf-8'
return r.text
except:
return ""
def getContent(url):
html = getHTMLText(url)
# print(html)
soup = BeautifulSoup(html, "html.parser")
title = soup.select("div.hd > h1")
print(title[0].get_text())
time = soup.select("div.a_Info > span.a_time")
print(time[0].string)
author = soup.select("div.qq_articleFt > div.qq_toolWrap > div.qq_editor")
print(author[0].get_text())
paras = soup.select("div.Cnt-Main-Article-QQ > p.text")
for para in paras:
if len(para) > 0:
print(para.get_text())
print()
#写入文件
fo = open("text.txt", "w+")
fo.writelines(title[0].get_text() + "\n")
fo.writelines(time[0].get_text() + "\n")
for para in paras:
if len(para) > 0:
fo.writelines(para.get_text() + "\n\n")
fo.writelines(author[0].get_text() + '\n')
fo.close()
#将爬取到的文章用字典格式来存
article = {
'Title' : title[0].get_text(),
'Time' : time[0].get_text(),
'Paragraph' : paras,
'Author' : author[0].get_text()
}
print(article)
def main():
url = "http://news.qq.com/a/20170504/012032.htm"
getContent(url);
main()
掌握基本的爬取数据之后,便尝爬取取大量数据。经过多次尝试发现,首先需要准备多个ip,同一个ip多次访问长时间会导致结果全部为空。
其次是多线程,为的是增加速度。python中多线程网上大多使用的是pool
使用
if __name__ == '__main__':#需加上这句代码,这时是一种固定的写法
# pool()有一个参数,processes,表示有多少个进程,比如processes=2
pool = ThreadPool() //网上大部分使用的是pool=Pool(),但是经过多次尝试总是失败,然后改成了这样的。 pool.map(get_all_list_info,urlStr) //两个参数,第一个为调用的方法,该方法有参数,但是后边不写形参,map的第二个参数为一个迭代器,就是集合形式,会按顺序取其中的数据,作为参数传递给方法。
pool.close()
pool.join()
掌握这些,基本可以实现大量数据爬取。
python之爬取网页数据总结(一)的更多相关文章
- python爬虫——爬取网页数据和解析数据
1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.只要浏览器能够做的事情,原则上,爬虫都能够做到. 2 ...
- 使用webdriver+urllib爬取网页数据(模拟登陆,过验证码)
urilib是python的标准库,当我们使用Python爬取网页数据时,往往用的是urllib模块,通过调用urllib模块的urlopen(url)方法返回网页对象,并使用read()方法获得ur ...
- python爬虫爬取天气数据并图形化显示
前言 使用python进行网页数据的爬取现在已经很常见了,而对天气数据的爬取更是入门级的新手操作,很多人学习爬虫都从天气开始,本文便是介绍了从中国天气网爬取天气数据,能够实现输入想要查询的城市,返回该 ...
- 使用 Python 爬取网页数据
1. 使用 urllib.request 获取网页 urllib 是 Python 內建的 HTTP 库, 使用 urllib 可以只需要很简单的步骤就能高效采集数据; 配合 Beautiful 等 ...
- 接着上次的python爬虫,今天进阶一哈,局部解析爬取网页数据
*解析网页数据的仓库 用Beatifulsoup基于lxml包lxml包基于html和xml的标记语言的解析包.可以去解析网页的内容,把我们想要的提取出来. 第一步.导入两个包,项目中必须包含beau ...
- 使用python爬虫爬取股票数据
前言: 编写一个爬虫脚本,用于爬取东方财富网的上海股票代码,并通过爬取百度股票的单个股票数据,将所有上海股票数据爬取下来并保存到本地文件中 系统环境: 64位win10系统,64位python3.6, ...
- 03:requests与BeautifulSoup结合爬取网页数据应用
1.1 爬虫相关模块命令回顾 1.requests模块 1. pip install requests 2. response = requests.get('http://www.baidu.com ...
- python动态爬取网页
简介 有时候,我们天真无邪的使用urllib库或Scrapy下载HTML网页时会发现,我们要提取的网页元素并不在我们下载到的HTML之中,尽管它们在浏览器里看起来唾手可得. 这说明我们想要的元素是在我 ...
- pycharm爬取网页数据
1 python环境的配置 1.1 安装python文件包,放到可以找到的位置 1.2 右键计算机->属性->高级环境设置->系统变量->Path->编辑->复制p ...
随机推荐
- 2-0 虚拟机与Linux系统安装
虚拟机与Linux系统安装 虚拟机硬件选择 由于是初学Linux,所以我们通过在虚拟机里安装的方式学习Linux,如果不知道找虚拟机和Linux的话请看我上一篇博客:计算机基础 如果你已经准备好了虚拟 ...
- PYTHON TDD学习(一)-->Python 3.4版本环境安装Django及其启动
1.安装Python3.4版本,原因:3.4及其以后版本默认自带pip工具,非常好用 2.django 安装命令(c:\Python34\Scripts):pip install django 3.s ...
- python基础之数据类型转换
方法转换:str -->list str.split() list -->str ''.join(list)强制转换:str -->list list(str) str --> ...
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
1.nginx 配置模板 server { listen ; client_max_body_size 512M; proxy_set_header Connection ""; ...
- Dubbo使用Sentinel来对服务进行降级与限流
一.Sentinel 是什么 Sentinel 是阿里中间件团队开源的,面向分布式服务架构的轻量级流量控制产品,主要以流量为切入点,从流量控制.熔断降级.系统负载保护等多个维度来帮助用户保护服务的稳定 ...
- C++;STL--队列与栈;
队列 queue模板类的定义在<queue>头文件中. queue 模板类也需要两个模板参数,一个是元素类型,一个容器类型,元素类型是必要的,容器类型是可选的,默认为deque 类型. 定 ...
- AcWing池塘计数
这个题让我们求连通块得数数量,我考虑用flood fill算法. 也就是枚举这个地图每一个点,假如符合要求就bfs与这个点联通的点,并打上标记.结束后接着枚举没有被标记并且符号要求的点... 1.== ...
- 使用Python基于VGG/CTPN/CRNN的自然场景文字方向检测/区域检测/不定长OCR识别
GitHub:https://github.com/pengcao/chinese_ocr https://github.com/xiaofengShi/CHINESE-OCR |-angle 基于V ...
- CSS3面包屑菜单导航
在线演示 本地下载
- node工具之pm2
pm2 PM2是带有内置负载平衡器的Node.js应用程序的生产过程管理器.它使您可以使应用程序永远保持活动状态,无需停机即可重新加载它们,并简化常见的系统管理任务. 安装 npm install p ...