四川省建设厅职改办网站,网站有哪些类型,重庆产品网站推广,小程序平台商城前言#xff1a; 本文非常浅显易懂#xff0c;可以说是零基础也可快速掌握。如有疑问#xff0c;欢迎留言#xff0c;笔者会第一时间回复。 一、爬虫的重要性#xff1a; 如果把互联网比喻成一个蜘蛛网#xff0c;那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛通过网页的…
前言 本文非常浅显易懂可以说是零基础也可快速掌握。如有疑问欢迎留言笔者会第一时间回复。 一、爬虫的重要性 如果把互联网比喻成一个蜘蛛网那么Spider就是在网上爬来爬去的蜘蛛。网络蜘蛛通过网页的链接地址来寻找网页从网站某一个页面通常是首页开始读取网页的内容找到在网页中的其它链接地址然后通过这些链接地址寻找下一个网页一直循环下去直到把整个网站所有的网页都抓取完为止。 摘取部分网友的回复 1、之前在北京买房谁想房价开始疯长链家的房价等数据分析只给了一小部分远远不能满足自己的需求。于是晚上花了几个小时的时间写了个爬虫爬下了北京所有的小区信息及北京所有小区的所有历史成交记录。
2、我的爱人是某网络公司的销售需要收集各种企业信息然后打电话联系。于是乎利用采集脚本抓一坨一坨的资料给她用而她的同事天天自己搜资料整理到半夜。
二、实践爬取电影天堂电影详情页
1、网页分析及爬取第一页的详情页url
从电影天堂最新电影界面。可以看到其第一页url为 www.ygdy8.net/html/gndy/d… 第二页为www.ygdy8.net/html/gndy/d…第三第四页也类似
from lxml import etree
import requestsurl http://www.ygdy8.net/html/gndy/dyzz/list_23_1.htmlheaders {User_Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36,
}response requests.get(url,headersheaders)# response.text 是系统自己默认判断。但很遗憾判断错误导致乱码出现。我们可以采取另外方式 response.content。自己指定格式解码
# print(response.text)
# print(response.content.decode(gbk))
print(response.content.decode(encodinggbk, errorsignore))
先以第一页为例打印数据如下 分析电影天堂 html 源代码可以得出每个 table 标签就是一个电影 通过 xpath 拿到每个电影的详情url
html etree.HTML(text)
detail_urls html.xpath(//table[classtbspan]//a/href)
for detail_url in detail_urls:print(detail_url) #加上域名即为详情 url
结果如下 2、整理代码并爬取前7页的电影列表url
from lxml import etree
import requests# 域名
BASE_DOMAIN http://www.ygdy8.net
# url http://www.ygdy8.net/html/gndy/dyzz/list_23_1.htmlHEADERS {User_Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36,
}def spider():base_url http://www.ygdy8.net/html/gndy/dyzz/list_23_{}.htmlfor x in range(1,8):url base_url.format(x)print(url) # 求出每一页电影列表的url eg: http://www.ygdy8.net/html/gndy/dyzz/list_23_1.htmlif __name__ __main__:spider()
3、爬取每一部电影的详情页地址
def get_detail_urls(url):response requests.get(url, headersHEADERS)# response.text 是系统自己默认判断。但很遗憾判断错误导致乱码出现。我们可以采取另外方式 response.content。自己指定格式解码# print(response.text)# print(response.content.decode(gbk))# print(response.content.decode(encodinggbk, errorsignore))text response.content.decode(encodinggbk, errorsignore)# 通过 xpath 拿到每个电影的详情urlhtml etree.HTML(text)detail_urls html.xpath(//table[classtbspan]//a/href)detail_urls map(lambda url:BASE_DOMAINurl,detail_urls) #这句意思相当于下面一段代码:替换列表中的每一个url# def abc(url):# return BASE_DOMAINurl# index 1# for detail_url in detail_urls:# detail_url abc(detail_url)# detail_urls[index] detail_url# index1return detail_urls
4、抓取电影详情页的数据 # 解析详情页面
def parse_detail_page(url):movie {}response requests.get(url,headers HEADERS)text response.content.decode(gbk, errorsignore)html etree.HTML(text)# title html.xpath(//div[classtitle_all]//font[color#07519a]) # 本行47行下面已修改# 打印出 [Element font at 0x10cb422c8, Element font at 0x10cb42308]# print(title)# 为了显示我们需要转一下编码# for x in title:# print(etree.tostring(x,encodingutf-8).decode(utf-8))# 我们是为了取得文字所以修改47行title html.xpath(//div[classtitle_all]//font[color#07519a]/text())[0]movie[title] titlezoomE html.xpath(//div[idZoom]) [0] # 求出共同的顶级容器方便后面求职imgs zoomE.xpath(.//img/src) # 求出海报和截图cover imgs[0]if len(imgs) 1:screenshot imgs[1]movie[screenshot] screenshot# print(cover)movie[cover] coverinfos zoomE.xpath(.//text())for index,info in enumerate(infos):if info.startswith(◎年emsp;emsp;代):info info.replace(◎年emsp;emsp;代, ).strip() # strip 去掉空格movie[year] infoelif info.startswith(◎产emsp;emsp;地):info info.replace(◎产emsp;emsp;地, ).strip()movie[country] infoelif info.startswith(◎类emsp;emsp;别):info info.replace(◎类emsp;emsp;别, ).strip()movie[category] infoelif info.startswith(◎豆瓣评分):info info.replace(◎豆瓣评分, ).strip()movie[douban_rating] infoelif info.startswith(◎片emsp;emsp;长):info info.replace(◎片emsp;emsp;长,).strip()movie[duration] infoelif info.startswith(◎导emsp;emsp;演):info info.replace(◎导emsp;emsp;演, ).strip()movie[director] infoelif info.startswith(◎主emsp;emsp;演):actors []actor info.replace(◎主emsp;emsp;演, ).strip()actors.append(actor)# 因为主演有很多个再加上其在电影天堂中元素的特殊性需要遍历一遍在分别求出每一个演员for x in range(index1,len(infos)): # 从演员 infos 开始遍历求出每一个演员actor infos[x].strip()if actor.startswith(◎): # 也就是到了标签 的 ◎ 就退出breakactors.append(actor)movie[actor] actorselif info.startswith(◎简emsp;emsp;介 ):# info info.replace(◎简emsp;emsp;介 ,).strip()for x in range(index1,len(infos)):if infos[x].startswith(◎获奖情况):breakprofile infos[x].strip()movie[profile] profile# print(movie)elif info.startswith(◎获奖情况 ):awards []# info info.replace(◎获奖情况 , ).strip()for x in range(index1,len(infos)):if infos[x].startswith(【下载地址】):breakaward infos[x].strip()awards.append(award)movie[awards] awards# print(awards)download_url html.xpath(//td[bgcolor#fdfddf]/a/href)[0]movie[download_url] download_urlreturn movie 上述代码爬取了电影的每一个数据。为了让读者方便对照格式笔者已经下载了写此篇文章时的html—— “movie.html”放于github 中 最后结果 如果你对Python感兴趣想要学习python这里给大家分享一份Python全套学习资料都是我自己学习时整理的希望可以帮到你一起加油
有需要的小伙伴可以点击下方链接免费领取或者V扫描下方二维码免费领取 Python全套学习资料 1️⃣零基础入门
① 学习路线
对于从来没有接触过Python的同学我们帮你准备了详细的学习成长路线图。可以说是最科学最系统的学习路线你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。
② 路线对应学习视频
还有很多适合0基础入门的学习视频有了这些视频轻轻松松上手Python~
③练习题
每节视频课后都有对应的练习题哦可以检验学习成果哈哈
2️⃣国内外Python书籍、文档
① 文档和书籍资料 3️⃣Python工具包项目源码合集
①Python工具包
学习Python常用的开发软件都在这里了每个都有详细的安装教程保证你可以安装成功哦
②Python实战案例
光学理论是没用的要学会跟着一起敲代码动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。100实战案例源码等你来拿
③Python小游戏源码
如果觉得上面的实战案例有点枯燥可以试试自己用Python编写小游戏让你的学习过程中增添一点趣味
4️⃣Python面试题
我们学会了Python之后有了技能就可以出去找工作啦下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂并且有阿里大佬给出了权威的解答刷完这一套面试资料相信大家都能找到满意的工作。
上述所有资料 ⚡️ 朋友们如果有需要的可以扫描下方二维码免费领取