python爬虫爬取导航网站所有网址并建立自己的导航网站

分析目标网站

  1. 目标网站的域名│www.dianyinggou.com/linkNav/
  2. 网站结构 | 静态
  3. 是否反爬虫 | 否

制定攻略

1.将分类页面的目录和名称写进列表里面,然后通过循环将列表里面的目录和名称依次导出,目的是为了组合成新的链接,方便访问下级链接
如:

list=['new','hot','free']
length=len(list)
for i in range(0,length):
	link="http://www.baidu.com/"+list[i]

这样就得出了下级链接
在这里插入图片描述
2.得到连接后,需要requests对它进行访问
在这里插入图片描述
可以看到,我们想要的链接就在这个位置,只需要将这个地方进行标签定位就能获取到我们想要的值,但是在这之前我们需要看看这个页面有多少这样的网址
3.在这里插入图片描述
可以看到有很多页,我们还要在代码中添加自动翻页的功能
4.首先我们要先知道一共有多少页面才好下手,这就要找末页的元素,打开开发者工具点击末页,可以看到,链接中刚好存在最大数,只需要提取最大数就可以利用for循环来进行翻页了,因为链接也是按照数字排序的在这里插入图片描述
在这里插入图片描述
5.最后就简单了,直接上代码

使用到的工具

  1. pycharm
  2. Hbuilder
  3. 一台已经布置好的云服务器

代码

import requests
from bs4 import BeautifulSoup

# 网站根域名
root_url = "http://www.dianyinggou.com/"
# 定义分类页面的目录
page = ['linkNew/', 'linkHot/', 't/btcili/', 't/zaixianyingyuan/', 't/yingshixiazai/', 't/tiantianzhuiju/',
        't/dongmanyingshi/', 't/jilupian/', 't/shipinjiexi/', 't/zimuxiazai/', 't/yingshizhoubian/', 't/shipinzhibo/',
        't/zongyiyule/']
# 定义分类页面名
page_name = ['最新网址', '热门网址', 'BT磁力', '在线影院', '影视下载', '天天追剧', '动漫影视', '纪录片', '视频解析', '字幕下载', '影视周边', '视频直播', '综艺娱乐']
# 计算共有几个分类页面
length = len(page)
# 获取分类页面的地址
for i in range(0, length):
    page_link = root_url + page[i]
    print("<h3>" + page_name[i] + "</h3>")
    # 直接访问分类页面地址
    r = requests.get(page_link)
    # 将得到的页面数据解析
    soup = BeautifulSoup(r.text, "lxml")
    # 定位到分类页面的末页链接
    last_link = soup.find('div', class_='centerContainer mainPage').find_all('a')[-1]
    # 判断链接是否为空链
    if last_link is not None:
        # 提取链接中的href元素
        last_link = last_link['href']
        # 提取分类页面连接中的最大数
        max_page_num = last_link.replace(page_link + 'page_', '').replace('.html', '')
        # 利用最大数制造循环,从小到大赋值给j,然后利用循环数来翻页
    for j in range(0, int(max_page_num)):
        # 目标链接
        page_order_link = page_link + 'page_' + str(j) + '.html'
        # 请求目标链接
        r = requests.get(page_order_link)
        # 解析页面
        soup = BeautifulSoup(r.text, "lxml")
        # 定位页面标签,将获得的值存储为列表
        target_domains = soup.find_all('div', class_='rightInfo')
        # 利用循环将表中的数据提取出来
        for target_domain in target_domains:
            # 网站名称
            target_domain_name = target_domain.find('h4').find('a')['title']
            # 网站链接
            target_domain_link = target_domain.find('ul', class_='info').find('a').text
            #打印出html代码
            print("<a href=\"http://" + target_domain_link + "\" >" + target_domain_name +"</a>")

将打印出的代码拷贝进Hbuilder

将样式稍加修改,然后保存进html文件中,最后上传至服务器,最后做出来的效果
在这里插入图片描述
闲聊加群:695650348,群里有学习python的资料,还有各种资源或软件,有问题可以私聊管理员解决

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰阔落hwic

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值