使用Python的request以及bs4爬取一些简单东西

代码整体写的很烂,就是练手写着玩的,自己也是新手,记录一下,方便以后用的时候找出来瞅瞅

首先下载需要的库,可以命令行下载也可以pycharm下载

下载完成后倒入

import  requests
import sys
import re
import  time
from bs4 import  BeautifulSoup
import Settting
import xlwt

因为后面涉及到字符串选取和将最后数据保存到Excel所以需要额外倒入了xlwt
初始化几个需要用到的列表,后面筛选过后的数据直接存到这些列表里面
headers的作用是伪装浏览器

#初始化列表,存数据
All_info_list = []
img_list = []
name_list = []
Downurl_list = []
#加入请求头
headers = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.106 Safari/537.36"
}
#获取网页数据
def get_html(url):
    request = requests.get(url,headers = headers)
    request.encoding = "gbk2312"
    Content = request.text
    return  Content

这里是根据输入的url链接,然后会返回网页源代码给我们,因为可能中文会显示乱码的问题,写了

request.encoding = "gbk2312"

然后return返回内容

def Start(url):

    NeiRong = get_html(url)
    soup = BeautifulSoup(NeiRong,"html.parser")#使用BeautifulSoup库对网页源代码进行结构化,为过滤做好准备

    LingShi_img = soup.select('body > div > div > ul > li > a > img')#得到相应网页的图片,返回的是列表

    for img in LingShi_img:
        img_list.append(img.get("src"))
    LinShi_name = soup.select('body > div> div > ul > li > a > h3')#得到相应的名字,返回值列表

    for name in LinShi_name:
        name_list.append(name.get_text())

    ahref_list = soup.select('body > div > div > ul > li > a')#得到一个url,列表

    for i in ahref_list:
        #为得到播放地址,构造新的url
        Nurl = ***************************** 这里没有写链接,实际上就是对上面得到的url做了字符串的拼接
        BoFangContent =  get_html(Nurl)
        soup = BeautifulSoup(BoFangContent, "html.parser")  # 使用BeautifulSoup库对网页源代码进行结构化,为过滤做好准备
        ScriptText = soup.select('body > div> div > div > ul > script')

        ChuBuUrl = re.findall(r"var down_url = '(.+?)';",str(ScriptText[1]))#取出来的列表进行字符串替换,换成我们想要的,作进一步处理
        YiShaUrl = str(ChuBuUrl[0]).replace("string1","string2")

        Downurl_list.append(YiShaUrl)
    time.sleep(3)

这部分代码主要是调用第一个函数返回的内容,对内容进行处理。从内容里面找到我们想要的部分,然后存到列表里面
soup.select方法里面的参数使用浏览器,按发f12然后找到你想要得到的标签部分,右击,选择copy->copy selector
然后复制到代码里就是了,一般使用这个返回的列表可能为空,例如我们拿到的为:
“body > script:nth-child(15)”,这是把把:nth-child(15)去掉,只保留body > script
这样找的范围会大一些。然后根据列表索引值找我们想要的数据

ChuBuUrl = re.findall(r"var down_url = '(.+?)';",str(ScriptText[1]))#取出来的列表进行字符串替换,换成我们想要的,作进一步处理

在后面用到的正则是对标签里的内容想要截取,用的是正则最基本的,复杂的自己也还没搞会,就是直接将自己想要的内容放在括号里面,括号前后输入我们想要筛序的字符串前后的数据,最终就会把我们想要的东西保留下来。返回的也是列表,并且保证第二个参数是字符串。

if __name__ == "__main__":
    #构造URL
    urls = ["*************************".format(str(i)) for i in range (1,100)]#这里我想要这个url里面前100页数据,自己观察url发现只是改变了其中一个数之,所以构造一下url
    
    pagenum = 0#这个只是爬完一页打印一次,方便观看到进度
    for url in urls:
        pagenum += 1
        print(pagenum)
        Start(url)#调用上面的函数

	#构建Excel表格
    #进行初始化表格的命令
    book = xlwt.Workbook(encoding='utf-8')
    sheet = book.add_sheet('Sheet1')
    
    #将表格第一行写下表头
    header = ["名称", "图片", "下载链接"]
    for h in range(len(header)):
        sheet.write(0, h, header[h])

	#一开始构造的三个列表在这里添加一下,实际上添加不添加意义不大了
    All_info_list.append(name_list)
    All_info_list.append(img_list)
    All_info_list.append(Downurl_list)
    #对我们爬取的内容写到表格里,ww代表列,hh代表行
    ww = 0
    for Tlist in All_info_list:
        hh = 1
        for  data in Tlist:
            sheet.write(hh,ww,data)#将我们的数据data下载了第hh行,第ww列里面
            hh += 1
        ww += 1

在这里插入图片描述
爬取结果就是这样了,因为爬取的是一些是,违规绅士内容,所以打码了,还有就是代码关于链接的也都打****************了,涉及到链接的可私聊我,哈哈233333333333333333333.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值