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.最后提交爬取的全部数据、爬虫及数据分析源代码。