啵591_2022年网络我的网络爬虫学习心得

啵591_2022年网络我的网络爬虫学习心得

目录

  • 前言
  • 一、学习心得
  • 二、常用 pip模块介绍
  • 三、实验总结
  • 1、实验一:爬取单个网页代码及结果
  • 2、实验二:爬取多个站点代码及结果
  • 2.1 下载scrapy
  • 2.2 建立爬虫项目
  • items的配置
  • middlewares的配置
  • pipelines的配置
  • settings的配置
  • 创建爬虫python文件
  • 2.3 数据存储
  • 3、搭建框架Gerapy代码及结果

前言

网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或他类似网站,可以自动采集所有其能够访问到的页面内容,以获取或更新这些网站的内容和检索方式。从功能上来进,爬虫一般分为数据采集,处理,储存三个部分。大部分爬虫都是按“发送请求一一获得页面一解析页面一抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。

一、学习心得

这个学期学习了《基于python的数据爬虫》这门课,自己有了很多心得和收获。在学习python之前我们也学过C++,从而了解了些编程知识,这学期学了python之后,对于编程和爬虫逻辑有了更深刻的学习和认识。首先老师一开始就给我们介绍python数据爬虫的整个课程框架和未来这门课的就业方向,给了我们一个比较明确的目标。经过每堂课程的学习,也让我对python数据爬虫有了更多的了解,虽然理论知识很少,但是需要大量的实践操作。
从定义上来说,爬虫就是模拟用户自动浏览并且保存网络数据的程序,当然,大部分的爬虫都是爬取网页信息 (文本,图片,媒体流)。在经过跟着老师学习如何从网页上进行爬虫的思维逻辑后,自己也从中学到了如何从网页爬取数据信息,利用MongoDB和MySQL将爬取到的数据写入数据库里,方便整理查看。还学习到了Scrapy爬虫框架和Gerapy框架的流程。最后实践操作了三个实验,汇总成了实验报告。
觉得学习这门课后对我的帮助非常大,在一次次报错中学习到了很多知识,增强了自我学习的能力和解决问题的能力,大大的丰富了我的知识面,提升了我的编程能力。

二、常用pip模块介绍

1、requests模块
requests模块是python中原生的基于网络请求的模块,是python的一个HTTP客户端库,跟urlib ,urlib2类似,其主要作用是用来模拟浏览器发起请求。功能强大,用法简洁高效。
2、bs4模块
beautiful soup 4是一个可以从HTML或XML文件中提取数据的Python库。它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。Beautiful Soup会帮你节省数小时甚至数天的工作时间。
3、pandas模块
pandas是基于numpy构建的,用来做数据分析的。具备对其功能的数据结构DataFrame,Series,集成时间序列功能,提供丰富的数学运算和操作和灵活处理缺失数据的功能。
4、selenium模块
selenium是基于浏览器自动化的一个模块,优点是便捷的获取网站加载的动态数据和便捷实现模拟登陆。
5、sqlalchemy模块
sqlalchemy是用于实现 ORM (Object Relational Mapping,对象关系映射)的一个模块,即把数据库的表结构映射到对象上。在Python中,也就是将关系型数据库表结构抽象成面向对象的Python类,将表操作转换成类操作,避免了复杂的 SQL语句编写。
6、pymongo模块
pymongo模块是python操作mongo数据的第三方模块。
import pymongo #连接mongo数据库
Client=pymongo.Mongoclient(host=‘localhost’,port=27017)
7、scrapy模块
scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中。其最初是为了页面抓取(更确切来说,网络抓取)所设计的,也可以应用在获取API所返回的数据(例如Amazon Associates WebServices )或者通用的网络爬虫。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
8、gerapy_auto_extractor模块
这是自动提取器模块,也可以单独使用。可以使用此包来区分列表页面和详细信息页面,我们可以使用它从列表页面提取url,还可以从详细信息页面提取title ,date,content ,而无需任何xpath或Selector。与其他方案相比,它对于中文新闻网站更有效。
9、gerapy模块
gerapy是一个scrapy分布式管理模块。gerapy可以帮助我们: 更方便的控制爬虫运行;更直观的查看爬虫状态;更实时地查看爬取结果;更简单的实现项目部署;更统—地实现主机管理。
10、scrapyd模块
scrapyd通常作为守护进程运行,它侦听运行爬虫的请求,并为每个请求生成一个进程,该进程基本上执行: scrapy crawl [myspider]。Scrapyd还并行运行多个进程,将它们分配到max_proc和max_proc_per_cpu选项提供的固定数量的插槽中,启动尽可能多的进程来处理负载。除了调度和管理进程之外,scrapyd还提供了一个JSON web服务来上载新的项目版本(作为egg)和调度爬虫。

实验总结

1、实验一:爬取单个网页代码及结果
抓取数据流程:
1、 确定目标网站:中国人民网
2、 访问:从中找取一篇文章
3、 页面解析:beautifulsoup
4、 数据存储:分别存入MySQL和MongoDB

导入MySQL数据库代码如下:

import requests
from bs4 import BeautifulSoup
import pandas as pd
from urllib import parse
from sqlalchemy import create_engine
mysql_name = "root"
mysql_password = "225588whh"
mysql_server = "localhost"
engine = create_engine("mysql+pymysql://{}:{}@{}:3306/temp?charset=utf8mb4".format(mysql_name,mysql_password,mysql_server))

目标网站内容解析

url = "http://health.people.com.cn/GB/408568/index.html"
html = requests.get(url)
html.encoding = "GB2312"
soup = BeautifulSoup(html.text,'lxml')

爬取数据

data = []
for i in soup.find_all("div",class_="newsItems"):
    title = i.a.text
    date = i.div.text
    url = parse.urljoin(url,i.a["href"])
    # url = "http://health.people.com.cn" + i.a["href"]
    data.append((title,date,url))
    df = pd.DataFrame(data,columns=["title","date","url"])
    df.head()

写入MySQL数据库

df
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值