天天美剧爬虫
需要用到的库,request,xpath,还有目标网,请求头。
import requests#调用requests库
from lxml import etree#调用xpath
url = 'http://ttmj.cc/type/1.html'#目标网址,通过观察,可以发现这是第一页的数据
#通过更改数字,改页数。可以使用for来获取其他几页的数据。
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}#设置请求头
定义一个函数spider(),来获取网页的源码,再定义一个函数list_page(),用来获取每个美剧网址和源码
def spider():
response = requests.get(url,headers=headers)
source = response.text
list_page(source)#调用上面定义的函数
def list_page(source):
html = etree.HTML(source)#使用xpath解析
links = html.xpath("//ul[@class='ul clearfix']/li/a/@href")#获取每个美剧的链接
url_1 = 'http://ttmj.cc'#这里用xpath获取到的只有一部分链接,所以要加上前面的。
for link in links:
link = url_1 + link
get_detaile_page(link)#获取每一部美剧链接后,获取详情页的信息。
获取每一部美剧链接后,获取详情页的信息。
定义函数get_detaile_page(),获取到需要的信息后,放到一个字典里,然后打印出来。
def get_detaile_page(link):
movies = {}#新建一个字典,把获取到的东西全放到字典里。
response = requests.get(link,headers=headers)
text = response.text#获取详情页源码
html = etree.HTML(text)#使用xpath解析
video_url = link#美剧网址
name = html.xpath("//h1/text()")#美剧名字
performer = html.xpath("//dl[1]//text()")#主演
del performer[0]#这里面获得到的数据第一个元素带有‘主演:’,所以删去。因为xpath语法还弄的不明白,所以用del。
state = html.xpath("//dl[2]//text()")#状态
del state[0]#原因同上,多了个状态。
area = html.xpath("//dl[@class='dl-left mb-dl-right']//a//text()")#地区
time = html.xpath("//dl[7]//text()")#时间
del time[0]
movies = {
'video_url':video_url,
'name':name,
'performer':performer,
'state':state,
'area':area,
'time':time
}
print(movies)
没了
这是全部代码。
import requests#调用requests库
from lxml import etree#调用xpath
url = 'http://ttmj.cc/type/1.html'#目标网址,通过观察,可以发现这是第一页的数据,通过更改数字,改页数。可以使用for来获取其他几页的数据。
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}#设置请求头
def get_detaile_page(link):
movies = {}#新建一个字典,把获取到的东西全放到字典里。
response = requests.get(link,headers=headers)
text = response.text#获取详情页源码
html = etree.HTML(text)#使用xpath解析
video_url = link#美剧网址
name = html.xpath("//h1/text()")#美剧名字
performer = html.xpath("//dl[1]//text()")#主演
del performer[0]#这里面获得到的数据第一个元素带有‘主演:’,所以删去。因为xpath语法还弄的不明白,所以用del。
state = html.xpath("//dl[2]//text()")#状态
del state[0]#原因同上,多了个状态。
area = html.xpath("//dl[@class='dl-left mb-dl-right']//a//text()")#地区
time = html.xpath("//dl[7]//text()")#时间
del time[0]
movies = {
'video_url':video_url,
'name':name,
'performer':performer,
'state':state,
'area':area,
'time':time
}
print(movies)
def list_page(source):
html = etree.HTML(source)#使用xpath解析
links = html.xpath("//ul[@class='ul clearfix']/li/a/@href")#获取每个美剧的链接
url_1 = 'http://ttmj.cc'#这里用xpath获取到的只有一部分链接,所以要加上前面的。
for link in links:
link = url_1 + link
get_detaile_page(link)#获取每一部美剧链接后,获取详情页的信息。
def spider():
response = requests.get(url,headers=headers)
source = response.text
list_page(source)#调用上面定义的函数
if __name__ == "__main__":
spider()