作业①:
1.要求:熟练掌握 scrapy 中 Item、Pipeline 数据的序列化输出方法;Scrapy+Xpath+MySQL数据库存储技术路线爬取当当网站图书数据
2.候选网站:http://search.dangdang.com/?key=python&act=input
3.关键词:学生可自由选择
4.输出信息:MySQL的输出信息如下

5.实验过程
(1)settings

(2)items

(3)pipeline

  • 准备工作:创建、连接数据库、创建表格
  • 结束工作:关闭数据库、输出爬取信息总个数
  • 数据处理:将数据插入表中

    (4)dangdang
  • 翻页处理:通过参数page_index进行url拼接爬取6页网页信息
  • 分析网页源代码,找到各字段信息的标签位置




    (5)结果

6.感悟总结
遗留问题:在复现翻页阶段,访问links的每个link,通过urljoin函数与response.url地址组合成完整的url地址,再次建立Request对象,parse函数被递归调用。即:
但是没有想到如何利用该递归调用方法限制爬取数量。

作业②:
1.要求:熟练掌握 scrapy 中 Item、Pipeline 数据的序列化输出方法;使用scrapy框架+Xpath+MySQL数据库存储技术路线爬取外汇网站数据。
2.候选网站:招商银行网:http://fx.cmbchina.com/hq/
3.输出信息:MySQL数据库存储和输出格式

4.实验过程
(1)settings

(2)items

(3)pipeline
准备工作:创建、连接数据库、创建表格
结束工作:关闭数据库、输出爬取信息总个数
数据处理:将数据插入表中
注:该pipeline与第一题几乎一模一样,故不再截图

(4)investment

  • 分析网页源代码各条信息的标签位置如下:
  • 使用tody进行定位时,无信息返回。因此直接定位标签td,采用多个列表保存对应字段所有信息
  • 查看网页源代码各字段td标签属性等信息

    *Currency:由于在每个tr标签下,td[@class='fontbold']标签有两个,Currency为第一个,因此删除多余信息

    *TSPs、CSPs、TBPs、CBPs :这四个字段信息均在td[@class='numberright']标签下,直接提取

    *Time:由于在每个tr标签下,td[@align='center']标签有五个,Time为第三个,因此删除多余信息

(5)结果输出

5.感悟总结
(1)在该题中,直接使用//tbody//tr无法找到所有tr标签,但是可以采用//div[@id="realRateInfo"]/table//tr来定位,直接忽略tbody标签;

作业③
1.要求:熟练掌握 Selenium 查找HTML元素、爬取Ajax网页数据、等待HTML元素等内容;使用Selenium框架+ MySQL数据库存储技术路线爬取“沪深A股”、“上证A股”、“深证A股”3个板块的股票数据信息。
2.候选网站:东方财富网:http://quote.eastmoney.com/center/gridlist.html#hs_a_board
3.输出信息:MySQL数据库存储和输出格式如下,表头应是英文命名例如:序号id,股票代码:bStockNo……,由同学们自行定义设计表头:

4.实验过程
(1)准备工作:创建web浏览器,建立、连接数据库,创建表格,数据插入表格函数、结束时关闭数据库
(2)分析网页源代码,定位标签

  • 定位所有tr标签

  • 对于每个tr标签(除第一个),每个td子标签包含股票信息,且具有一定的顺序性,可以直接定位所有td标签,通过下标得到各字段信息。其中股票名称由3个td标签的text组成


    (3)翻页处理:对于每种股票,爬取6页信息
  • 网页源代码“下一页”定位


    (4)股票种类跳转:“沪深A股”、“上证A股”、“深证A股”
  • “沪深A股”->“上证A股”
  • “上证A股”->“深证A股”

5.结果输出

  • 控制台输出爬取网页
  • 查看表

6.感悟总结
(1)在股票种类跳转处理时,当跳转到第二种股票,爬取该种股票第一页信息时出现错误:

搜索发现是等待时间不够网页未加载出来,但是加长了等待时长,等待了30秒,还是没有反应,于是找到下列解决方法:
self.driver.execute_script("arguments[0].click();", link)
在该语句下还需要设置等待时长,否则会出现如下现象:已经点击了翻页,但是还没有完成翻页,于是又爬了一次当前页,然后再要执行翻页时页面已经刷新了,前面找到的翻页元素已经过期了,无法执行点击。

(2)巩固了Selenium框架的使用

代码地址:https://gitee.com/jmssj/pythonProject/tree/master/第四次大作业

 posted on 2021-11-10 20:54  金木s  阅读(22)  评论(0编辑  收藏  举报