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) + '\n')
    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:\Windows\Fonts\STZHONGS.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.最后提交爬取的全部数据、爬虫及数据分析源代码。