首页 > 代码库 > Python 2.7_First_try_爬取阳光电影网_20161206

Python 2.7_First_try_爬取阳光电影网_20161206

之前看过用Scrapy 框架建立项目爬取 网页解析时候用的Xpath进行解析的网页元素 这次尝试用select方法匹配元素

1、入口爬取页面 http://www.ygdy8.com/index.html

2、用到模块  requests(网页源码下载) BeautifulSoup4(网页解析)

3、思路:首先由入口爬取页面进行获取网页上方栏目及对应url 如下图技术分享

4、建立菜单url列表 for 循环再次进行解析 爬取每个一级菜单下的具体电影title 和url

5、问题:每个菜单下的url 进行再次解析后 由于网站内容不同 select 元素会出现非电影标题的连接和标题  

6、下一步处理:考虑建类和函数 运用递归循环获取url 并解析

  ①电影的url 再次进行解析 获取电影下载连接 并写入本地文件

  ②将5步骤中出现的非电影标题进行判断 删除

7、python 代码

#coding:utf-8
import requests
from bs4 import BeautifulSoup as bs

#爬取入口
rooturl="http://www.ygdy8.com/index.html"
#获取网页源码
res=requests.get(rooturl)
#网站编码gb2312
res.encoding=‘gb2312‘
#网页源码
html=res.text
soup=bs(html,‘html.parser‘)
cate_urls = []
for cateurl in soup.select(‘.contain ul li a‘):
    #网站分类标题
    cate_name=cateurl.text
    #分类url 进行再次爬取
    cate_url="http://www.ygdy8.com/"+ cateurl[‘href‘]
    cate_urls.append(cate_url)
    print "网站一级菜单:",cate_name,"菜单网址:",cate_url
#每个菜单url 解析
for i in range(len(cate_urls)):
    cate_listurl=cate_urls[i]
    res = requests.get(cate_listurl)
    res.encoding = ‘gb2312‘
    html = res.text
    soup = bs(html, ‘html.parser‘)
    print "正在解析第"+str(i+1)+"个链接",cate_urls[i]
    contenturls=[]
    contents=soup.select(‘.co_content8 ul‘)[0].select(‘a‘)
    #print contents
    for title in contents:
        moivetitle=title.text
        moiveurl=title[‘href‘]
        contenturls.append(moiveurl)
        print moivetitle,moiveurl
print contenturls

8、运行结果

技术分享

技术分享

 

 

Python 2.7_First_try_爬取阳光电影网_20161206