今天做了一早上的爬虫,爬去电影天堂的电影链接。使用了正则表达式。总的来说来不错。上代码。已经实现的功能:
1.抓取电影发布的日期
2.电影的名字
3.电影的年代
4.电影的产地
5.电影的类别
6:电影的字幕
目前还在考虑,需不需要这么多的字段。
也还遇到一些问题,比如 想抓取豆瓣评分。但是电影天堂的网页布局,有些不一样。很明显是两个人写的。。 尴尬!!
想要达到的预期目标,抓取电影名字,类别,海报,下载地址。
这些都基本上都完成了。
上一段代码:
from urllib.request import urlopen
from urllib.error import HTTPError
from bs4 import BeautifulSoup
from time import sleep
import re
moviesLinks = set() #全局变量,来储存主网页的链接
def getLinks(pageUrl):
global moviesLinks
html = urlopen(pageUrl)
bs4 = BeautifulSoup(html,"xml")
#print(bs4.prettify())
for link in bs4.findAll("a",{"href":re.compile("/html/gndy/+[a-z]+/[0-9]+/[0-9]+\.html")}): #正则表达式选取电影链接(过滤掉游戏下载链接,动漫链接,综艺链接)
if link.attrs['href'] not in moviesLinks:
newLink = link.attrs['href']
print(newLink)
moviesLinks.add(newLink)
getPageImformation(newLink)
def getPageImformation(pageUrl):
url = 'http://www.dytt8.net/'+pageUrl
html = urlopen(url)
bs4 = BeautifulSoup(html,"xml")
try:
date = bs4.find("div",{"class":"co_content8"}).ul.get_text().strip() #此时date还含有其他的东西
date = date.split('\n')[0] #这里就已经处理好了
except AttributeError:
print("一部分网页不是电影介绍的网页而已,不用担心")
try:
poster = bs4.find("div",{"id":"Zoom"}).img.attrs['src']
print(poster)
except AttributeError:
print('一部分网页没有海报而已,不用担心')
#这部分要进行 一些消息处理了(这网站写的 six six)
try:
name = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[1][4:].strip() #名字的处理
except Exception:
print("一部分网页不是电影介绍的网页而已,不用担心")
try:
time = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[3][4:].strip()
except Exception:
print("一部分网页不是电影介绍的网页而已,不用担心")
try:
origin = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[4][4:].strip()
print(origin)
except Exception:
print("一部分网页这个属性而已,不用担心")
try:
category = bs4.find("div",{"id":"Zoom"}).p.get_text().split('◎')[5][4:].strip()
print(category)
except Exception:
print("一部分网页这个属性而已,不用担心")
print("--------------------------------\n")
try:
downloadLink = bs4.find("td",{"bgcolor":"#fdfddf"}).a.get_text()
print(downloadLink)
except Exception:
print("一些页面不是影片介绍的页面而已,不用担心")
getLinks('http://www.dytt8.net/')
# 3是年代
# 4是产地
# 5是类别
# 6是语言
# 7是字幕
# 8IMDb评分
#