2022 年,把 Python 学得跟 Java 一样熟练——06 获取 \u817e\u8baf\u0020 Cosmic
背景
昨天看了一篇获取 House Price 的文章后,运行了案例代码,能看懂,但对 html 解析的用法还不熟悉。
今天继续练习 Python 编码,目标是腾讯 Cosmic ,先完成基本信息的获取。为什么选这个呢,主要是昨天想对着某文章练习 Python Code of Spider 时,发现它是一个付费专栏,于是自己来写写。
页面元素分析
开发者模式,定位到一个节点,根据 class
信息查询 Cosmic 节点,目标是具有ret-search-item clearfix
的 li
元素。
动漫的各项信息定位:
- 地址:第一个
a
标签下的img
标签的data-original
属性。 - 名称:第一个
a
标签的titile
属性。 - 作者:具有
ret-works-author
类属性的p
标签的文本。 - 描述:具有
ret-works-decs 类属性的
p` 标签的文本。 - 详情地址:具有
ret-works-view
类属性的a
标签的href
属性。
编码实现
取全部页面,考虑用多线程协作。
from bs4 import BeautifulSoup
import numpy as np
import requests
from requests.exceptions import RequestException
import threading"--动漫网页方法--"
def spiderPage(url, page):try:headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3947.100 Safari/537.36"}html1 = requests.request("GET", url, headers=headers, timeout=10)html1.encoding = 'utf-8' # 加编码html = html1.text# print('scrawl result')# print(html)return htmlexcept RequestException: # 异常捕获print('第{0}读取网页失败'.format(page))return None"--解析列表页面的动漫信息--"
def parsePage(url, page):# 取页面html = spiderPage(url, page)html = str(html)if html is not None:# soup = BeautifulSoup(html, 'lxml')soup = BeautifulSoup(html, 'html.parser')"--先确定动漫信息,即li标签列表,li class = ret-search-item clearfix --"cosmics = soup.find_all("li",class_="ret-search-item clearfix")for j in range(len(cosmics)): # 遍历每一个动漫cosmic = cosmics[j]"动漫海报:mod-cover-list-thumb mod-cover-effect ui-db"poster = cosmic.findNext("a")posterImgTag = poster.findNext("img")posterImgUrl = posterImgTag.get("data-original")print("posterImgUrl ",posterImgUrl)"动漫详情 URL"cosmicTag= cosmic.findNext("a",class_="ret-works-view")cosmicUrl = "https://ac.qq.com/"+ cosmicTag.get("href")"动漫名称:ret-works-title "print("name is", poster.get("title"))"动漫作者:ret-works-author"author = cosmic.findNext("p",class_="ret-works-author")print("author is ", author.text)"动漫描述:ret-works-decs"desc = cosmic.findNext("p",class_="ret-works-decs")print("desc is ",desc.text)print()# 启动两个线程获取页面数据
for i in range(1,100,2): # 遍历网页1-101url1 = "https://ac.qq.com/Comic/index/page/" + str(i)url2 = "https://ac.qq.com/Comic/index/page/" + str(i + 1)thread1 = threading.Thread(target=parsePage, args=(url1, i)) thread2 = threading.Thread(target=parsePage, args=(url2, i + 1))thread1.start()thread2.start()
运行结果
编码启示录
首先,有个大疑惑就是解析文本的时候, soup = BeautifulSoup(html, 'html.parser')
和 soup = BeautifulSoup(html, 'lxml')
有什么区别呢?
最初参考的代码,用的是 lxml
,select
按 class
解析不到东西,再改成 html.parser
用 find
方法可以正常解析了。
答案是,解析器不同:
- html.parser,内置,不需要额外的依赖项。
- html5lib,最宽大,如果HTML损坏,最好使用它。
- lxml,最快,依赖外部 C 。
其次,Python 解析页面还是挺好定位的。
今天先完成基础信息的获取,下一步的完善目标是生成 DataFrame
数据,写入 Excel 表格,同时获取全部的动漫图片。
2022 年,把 Python 学得跟 Java 一样熟练——06 获取 \u817e\u8baf\u0020 Cosmic相关推荐
- 新手学java还是python知乎_编程初学者应该先学C++、Java还是Python?
最近,看到这样的一个话题:"打算自学编程,但是不知道该先学哪门语言入门?编程初学者应该先学C++.Java还是Python?",作为一个新手,应该学什么语言入门比较好呢?相信这是困 ...
- python和java的区别-Java和Python的区别 学Python语言好还是Java好
原标题:Java和Python的区别 学Python语言好还是Java好 相信不少想学编程的人都在纠结到底学Java好还是学Python,毕竟当下正是Python的火热时期,然而Java也同样占据编程 ...
- python web前端 java ui学哪个好_学IT选Java还是Python?就业发展有何区别?
学IT选Java还是Python?就业发展有何区别? 来源:奇酷学院 发表于:2018-09-27 10:14:35 想了解一个语言就业到底好不好,得先明确语言的发展方向. 很多学员在选择专业上遇着难 ...
- 编程初学者应该先学C++、Java还是Python?
语言推荐: 第一大类语言包括Java.C.Python和C++. 这类语言都是非常通用的语言,它们并不局限于特定的编程平台或用途.(无疑问,你应该熟悉这四种语言.) 第二大类语言包括Java.C#.P ...
- 会python再学java要多久_【学过python多久能学会java】廖雪峰python教程要学多久
自学完廖雪峰python可以找到相关工作吗? 如果只是学完廖雪峰的教程我觉得是不够的,你必须对一些方面有更加深入的实践和学习.我是工作中需要用到python,看了廖雪峰的教程,实现快速开发. 学过py ...
- 中国地质大学(北京) 研究生 2022秋《Python科学计算》期末考试 模拟题2 题目+参考答案
另一套模拟题1: 期末考试 模拟题1 考试方法 浏览器(Chrome.火狐)登录PTA网址: pintia.cn,单击右上角"登录->考试登录",下拉菜单输入cugb 选择& ...
- 中国地质大学(北京) 研究生 2022秋《Python科学计算》期末考试 模拟题1 题目+参考答案
另一套模拟题2: 期末考试 模拟题2 考试方法 浏览器(Chrome.火狐)登录PTA网址: pintia.cn,单击右上角"登录->考试登录",下拉菜单输入cugb 选择& ...
- 什么样的python程序员好找工作-Python学到什么程度才可以去找工作?掌握这4点足够了!...
大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...
- python学到什么程度可以做兼职-Python学到什么程度才可以去找工作?掌握这4点足够了!...
大家在学习Python的时候,有人会问"Python要学到什么程度才能出去找工作",对于在Python培训机构学习Python的同学来说这都不是问题,因为按照Python课程大纲来 ...
最新文章
- Enhanced-RCNN: 一种高效的比较句子相似性的方法 |​WWW 2020
- 如何修改Exchange邮件报警信息
- PF_PACKET和AF_PACKET
- ListView属性设置
- Python读取大文件的坑“与内存占用检测
- Rails + React +antd + Redux环境搭建
- CentOS/Linux 卸载MATLAB
- Word 参考文献的自动修改
- 一图胜千言:用好图表,好好说话
- RINEX 3.02 版本导航信息文件格式说明
- 虚拟机VMware安装PhoenixOS(凤凰OS)进入命令行黑屏页面无法进入图形界面
- 蚂蚁金服2019实习生面经总结(已拿口头offer)
- 计算机软件毕业论文模板,计算机软件毕业论文提纲模板
- 今天是冰桶算法大揭秘!!
- 三星s8怎么分屏操作_双屏互动,大有可为 三星Galaxy Z Fold2 5G的魅力折叠体验
- 全面的IE兼容性调试问题
- 【20考研数学】整体难度如何,有什么特点?
- 爬取智联招聘上24座热门城市中Java招聘信息
- Visio二次开发(二)----Shape的添加和连接
- AndroidQQ5.0模仿
热门文章
- unity发布ios高通AR的问题
- 咳咳,软工新手读《大道至简》读后感
- Win10 IIS Web 配置
- python word排版_利用Python-docx 读写 Word 文档中的正文、表格、段落、字体等
- pandas 多条件筛选DataFrame
- 供水管网漏损监测方案
- 通过Python脚本下载【来此加密的免费HTTPS SSL证书】并自动更新到服务器和阿里云CDN
- vrrp路由器三种状态_VRRP路由器切换方法、路由器、VRRP主备切换系统及存储介质与流程...
- python 京东页码 翻页参数生成方法
- java业务逻辑层文档,java业务逻辑层类图