放暑假了,好多小伙伴都回家了,本周,我在天府软件园带着来自成工,川农,内师的小伙伴们一起学习Python在行业、信安领域的相关应用,我用爬虫让大家感受了一下技术的魅力和当下安全意识和渗透防御的重要性
我采用的蓝本是电影天堂的资源,当然,妈妈再也不用担心我没有资源看电影啦,我们要实现的是爬取目标页的电影,然后存到Sqlite中,然后用JS读取SQlite,并显示到页面
先来看看效果最终的截图吧
怎么样,有点感觉了哇,下面我们来看看关键代码是怎么样的,这里我只分享Python的内容,完整的代码请留下邮箱索取
电影小爬虫
作者:杨正辉
时间:2018-08-01 10:00
说明:用于抓取电影天堂最新电影版块的所有数据
数据范围为1-300页,每页20个数据共6000个
数据抓取回来后,自动存入Sqlite数据库
首先引入需要的库包:
import requests
from lxml import etree
然后通过request对象进行页面请求访问
#目标页面-最新
url_news = 'https://www.dy2018.com/html/gndy/dyzz/index.html'
response = requests.get(url_news)
如果发现返回的数据乱码,则需要人工改变一下编码:
print(response.encoding)#当前页面编码
response.encoding = 'gb2312'#改变页面的编码,每次发起请求以后,都需要重置编码
当发现返回状态不是200,则停止请求,如果是200,则进行爬虫逻辑:
scode = response.status_code
print(scode)
if scode==200:
print('可以爬虫')
#通过etree方法将网页文本转换为DOM对象
#etree在lxml库中
# print(response.text)
domroot = etree.HTML(response.text)#得到整个页面的dom对象
# 获得栏目的所有分页的URL
page_urls = domroot.xpath("//select[@name='select']/option/@value")#<select name = 'select' class='123123'><option value=''>
domain_url = 'https://www.dy2018.com'
# print(page_urls)
#将300页的分页URL遍历出来,并形成完整的分页URL
for page_url in page_urls:
page_url = domain_url + page_url#得到完整的分页URL
# print(page_url)
#模拟请求每一页,并得到每一页的内容?如何优化可以改变对方对爬虫的监听
response = requests.get(page_url)
response.encoding = 'gb2312'
# print(response.content)
pagedomroot = etree.HTML(response.content)#可以得到目标页DOM对象
# print(len())
a_list = pagedomroot.xpath("//td[@height='26']/b/a")
for tag_a in a_list:
title = tag_a.xpath('text()')#电影标题
# print(title)
if title:
title = title[0]
else:
continue
url = tag_a.xpath('@href') #对应详情页的链接
if url:
url = url[0]
else:
continue
# print(title+"|"+url)
#判断一下目标详情页的URL是否完整
#思路:只需要判断一下url的开头有没有http
if not url.startswith('http'):
url = domain_url + url #完善详情页URL
# print(url)
#模拟访问电影详情页
response = requests.get(url)
response.encoding = 'gb2312'
# print(response.text)
# 详情页的DOM对象
pageviewdom = etree.HTML(response.text)
pageview_download_link = pageviewdom.xpath("//td[@bgcolor='#fdfddf']//text()")
pageview_image_url = pageviewdom.xpath("//div[@id='Zoom']/p/img[@width='518']/@src")
print(pageview_download_link)
print(pageview_image_url)
if len(pageview_image_url)<=0:
# pageview_image_url='noimage.png'
pageview_image_url = pageviewdom.xpath("//div[@id='Zoom']/img[@width='518']/@src")
if len(pageview_download_link)<=0:
pageview_download_link="没有下载地址"
else:
print('网页异常,停止爬虫')
![Rec 0007[00-00-03--00-00-17].gif][2]