zoukankan      html  css  js  c++  java
  • 爬虫大作业

    1.选一个自己感兴趣的主题或网站。(所有同学不能雷同)

    爬取食谱网(香哈网)的食谱内使用过的食材

    2.用python 编写爬虫程序,从网络上爬取相关主题的数据。

    from bs4 import BeautifulSoup as bs
    from urllib.request import Request
    import urllib.request as ur
    import re
    
    
    def getHtml(url):
        header = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.115 Safari/537.36"}
        req = Request(url, headers=header)
        html = ur.urlopen(req).read().decode('utf-8')
        return html
    
    
    def getUrls(pageHtml):
        soup = bs(pageHtml, 'html.parser')
        w = soup.select('.s_list li a')
        urls = []
    
        for a in w:
            url = a.get('href')
            urls.append(url)
        return urls
    
    
    def getDetailInfo(url):
        try:
            html = getHtml(url)
            soup = bs(html, "html.parser")
            tr = soup.select('div[class="cell"]')
            for td in tr:
                content = td.text
                c = re.findall(r'w+', str(content))[0]
                print(c)
                return c
        except:
            pass
    
    
    if __name__ == "__main__":
        pageurls, a_list = [], []
        cpageurl = 'https://www.xiangha.com/caipu/z-jiachangcai/hot-'
        num = 1
        for i in range(86):
            pageurl = cpageurl + str(num)
            num += 1
            pageurls.append(pageurl)
        # 请求每个主页获得主页所有的菜名的网址并打印输出网址信息
        for purl in pageurls:
            # print("page:", purl)
            pageHtml = getHtml(purl)
            urls = getUrls(pageHtml)
            # print(urls)
            # # 解析获得的每个网址的信息
            for url in urls:
                a_list.append(getDetailInfo(url))
        doc = open('data2.txt', 'w')
        for a in a_list:
            doc.write(str(a) + '
    ')
        doc.close()
    

    3.对爬了的数据进行文本分析,生成词云。

    from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
    from scipy.misc import imread
    import jieba
    import re
    
    
    text=''
    path = 'C:\Users\Administrator\Desktop'
    f=open(path + '\data2.txt', 'r').read()
    info = re.sub('s+', '', f)
    text += ' '.join(jieba.lcut(info))
    # backgroud_Image = imread(p + '\ju.PNG')
    wc = WordCloud(
    width=500,
    height=500,
    margin=2,
    background_color='white',  # 设置背景颜色
    # mask=backgroud_Image,  # 设置背景图片
    font_path='C:WindowsFontsSTZHONGS.TTF',  # 若是有中文的话,这句代码必须添加,不然会出现方框,不出现汉字
    max_words=2000,  # 设置最大现实的字数
    stopwords=STOPWORDS,  # 设置停用词
    max_font_size=150,  # 设置字体最大值
    random_state=42  # 设置有多少种随机生成状态,即有多少种配色方案
    )
    wc.generate_from_text(text)
    wc.to_file(path + '\food.jpg')
    

    4.对文本分析结果进行解释说明。

    5.写一篇完整的博客,描述上述实现过程、遇到的问题及解决办法、数据分析思想及结论。

    主要问题:因为在反复测试爬取该网站的次数太多,使得该网站禁止了我的Ip,最后换了多台电脑和网络才能成功爬去想要的信息

    6.最后提交爬取的全部数据、爬虫及数据分析源代码。

  • 相关阅读:
    omnibus gitlab-ce安装
    Helm
    pod状态为Back-off
    我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。
    云主机搭建Kubernetes 1.10集群
    Linux清除Windows密码
    Nginx负载均衡之健康检查
    MariaDB主从复制搭建
    Python基础
    Tomcat URL重写
  • 原文地址:https://www.cnblogs.com/piglet00/p/8915992.html
Copyright © 2011-2022 走看看