文章      动态     相关文章     最新文章     手机版动态     相关动态     |   首页|会员中心|保存桌面|手机浏览

2deg0

https://sicmodule.kub2b.com/com2deg0/

相关列表
文章列表
  • 暂无文章
推荐文章
爬取简单网站
发布时间:2024-12-16        浏览次数:0        返回列表

基础爬虫主要使用以下几个库,可以直接冲anacada中调用,其中re和urlib两个库python3.9以上自带不需要在安装

from  bs4 import BeautifulSoup #正则表达式,进行文字匹配
import re #网页解析,获取数据
import urllib.request #制定URL,获取网页数据
import urllib.error
import xlwt
#import sqlite3 

def askurl(url):#模拟本机ID向豆瓣发送请求
    head = {#模拟浏览器头部,向豆瓣发送信息
        "User-Agent":"Mozilla / 5.0(Windows NT 10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 84.0.4147.89 Safari / 537.36"
        }
    #用户代理,表示告诉豆瓣告诉我们是什么类型的机器。本质上告诉浏览器,我们可以接受什么信息。
    request = urllib.request.Request(url,headers=head)
    html=''
    try:
        response = urllib.request.urlopen(request)
        html= response.read().decode("utf-8")
        #print(html)
    except urllib.error.URLError as e :
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,'reason'):
            print(e.reason)
        
    return html

#爬取网页
def getDate(baseurl):
    datalist=[]
    url=baseurl
    html=askurl(url)
    '''for i in range(0,10):#调用获取页面信息的函数,10次
        url=baseurl+str(i*25)
        html=askurl(url)#保存获取的源码'''
    
    #逐一解析数据
    soup=BeautifulSoup(html,'html.parser')
    for item in soup.find_all("div",class_="card-body"):#查找符合要求的字符串形成列表
        #print(item)#测试查看电影item
        date = [] #保存一部电影的信息
        item = str(item)
        #print(type(item))
        #获取影片超链接
        link = re.findall(findlink,item)
        #print(link)
        date.append(link)
           
        titles=re.findall(findname, item)
        date.append(titles)
        #print(titles)
        datalist.append(date)
        #print(datalist)
       
        #print(link)
    return datalist

def saveDate(datalist,savepath):#保存数据
    book=xlwt.Workbook(encoding='utf-8',style_compression=0)
    sheet = book.add_sheet('羞羞导航',cell_overwrite_ok=(True))
    col = ('详情链接','导航名称')#,'影片中文名称','外国名称','评分','评价数','概况',)#'相关信息')
    for i in range(0,2):
        sheet.write(0,i,col[i])#列名
    for i in range(0,50):
        print('这是第%d条'%(i+1))#多少行
        data = datalist[i]
        for j in range(0,2):
            sheet.write(i+1,j,str(data[j]))
        
    
    
    book.save(savepath)#保存''

完整代码如下 

from  bs4 import BeautifulSoup
import re
import urllib.request
import urllib.error
import xlwt
#import sqlite3

findlink=r'<a class="site-item" href="(.*?)" target="_blank" title.*?'
findname=r'<span class="name">(.*?)</span>
#findname=r'<span class="name">(.*?)</span>' #创建正则表达式规则
'''findimgsrc=re.compile(r'<img.*src="(.*?)"',re.S)#让r中包含所以字符,让换行符也考虑在内
findrate=re.compile(r'<span class="rating_num" property="v:average">(.*)</span>')
findjudg=re.compile(r'<span>(d*)人评价</span>')
findbd=re.compile(r'<p class="">(.*)</p>',re.S)
findsumm=re.compile(r'<span class="inq">(.*)</span>')#概况summary'''


def main():
#findlink = re.compile(r'<a href="(.*?)">')  #创建正则表达式规则
    baseurl='https://9sedh.com/'
    
    datalist=getDate(baseurl)
    savepath=r'羞羞导航.xls'
    askurl('https://9sedh.com/')
    
    saveDate(datalist,savepath)
#爬取网页
def getDate(baseurl):
    datalist=[]
    url=baseurl
    html=askurl(url)
    '''for i in range(0,10):#调用获取页面信息的函数,10次
        url=baseurl+str(i*25)
        html=askurl(url)#保存获取的源码'''
    
    #逐一解析数据
    soup=BeautifulSoup(html,'html.parser')
    for item in soup.find_all("div",class_="card-body"):#查找符合要求的字符串形成列表
        #print(item)#测试查看电影item
        date = [] #保存一部电影的信息
        item = str(item)
        #print(type(item))
        #获取影片超链接
        link = re.findall(findlink,item)
        #print(link)
        date.append(link)
           
        titles=re.findall(findname, item)
        date.append(titles)
        #print(titles)
        datalist.append(date)
        #print(datalist)
       
        #print(link)
    return datalist