下面来爬取百度贴吧的旅游信息,看看哪些地方是大家旅游关注的热点。不要问我这个十一月去了哪里,我还在家没日没夜地码字。这次我们使用urllib抓取页面,然后使用BeautifulSoup提取有用的信息,最后使用xlsxwriter将获取的信息写入excel表中1.使用技术python基础xlsxwriter用于编写excel文件。urllibpython内置爬虫工具BeautifulSoup分析提取数据2.目标页面https://tieba.baidu.com/f?kw=%E6%97%85%E6%B8%B8&ie=utf-8&pn=03.结果4、安装必要的库win+R打开运行输出cmd,进入控制台分别安装beautifulsoup4、lxml、xlsxwriter。tieba.baidu.com/f?kw=travel&ie=utf-8&pn=50第三页:https://tieba.baidu.com/f?kw=tourism&ie=utf-8&pn=100第四页:https://tieba.baidu.com/f?kw=Travel&ie=utf-8&pn=1502.页面信息旅游信息列表打开页面https://tieba.baidu.com/f?kw=Travel&ie=utf-8&pn=50按F12键键盘或者鼠标右键“查元素”(我用的是谷歌chrome浏览器),发现所有旅行列表都有一个共同的类名j_thread_list作者和创建时间作者的类是frs-author-name,创建时间isclass为is_show_create_timetitletitle为j_th_tit6.所有代码importxlsxwriter#用于编写excel文件importurllib.parse#URL编码格式转换importurllib.request#frombs4用于发起http请求importBeautifulSoup#css方法解析Extract信息url='https://tieba.baidu.com/f?kw='+urllib.parse.quote('旅游')+'&ie=utf-8&pn='#百度贴吧旅游资讯#parse.quote("旅游")#结果为%E6%97%85%E6%B8%B8herders={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/85.0.4183.102Safari/537.36','Referer':'https://tieba.baidu.com/','Connection':'keep-alive'}#请求头信息data=[]#所有爬虫数据都存放在这个数据列表中"""getList获取分页url中的列表信息分页地址"""defgetList(url):req=urllib.request.Request(url,headers=herders)#设置请求头response=urllib.request.urlopen(req)#发起请求Get响应结果responsehtmlText=response.read().decode("utf-8").replace("","")#htmlText=responseresultreadreads.decodeconvertstoutftext.replacereplacethecommentinhtml#我们需要的结果在注释中,所以我们需要先替换注释标签html=BeautifulSoup(htmlText,"lxml")#创建一个beautifulSoup对象thread_list=html.select(".j_thread_list")#获取所有旅行类别#遍历thread_list中thread的旅行列表:title=thread.select(".j_th_tit")[0].get_text()author=thread.select(".frs-author-name")[0].get_text()time=thread.select(".is_show_create_time")[0].get_text()#提取标题、作者、事件print(title)#打印标签data.append([title,author,time])#追加总数据"""获取所有页面地址,最多5页url页面地址p=5,最多5页"""defgetPage(url,p=5):foriinrange(5):link=url+str(i*50)#再拼接第一页0,第二页50,第三页100,第四页150getList(链接)#执行函数getList获取页面"""将写入的数据写入excel文件数据"""defwriteExecl(da??ta):lens=len(data)#获取页面长度workbook=xlsxwriter.Workbook('travel.xlsx')#创建一个excel文件sheet=workbook.add_worksheet()#添加一个工作表sheet.write_row("A1",["Title","Author","Time"])#写一行oftitlesforiinrange(2,lens+2):sheet.write_row("A"+str(i),data[i-2])#遍历数据并将行数据写入excelworkbook.close()#closeexcelfileprint("xlsx格式表写入数据成功!")"""定义main函数"""defmain():getPage(url,5)#获取页面writeExecl(da??ta)#写入数据到excel#如果模块名称__main__如果__na则执行main函数me__=='__main__':main()七、wordlistmainmaindef(define)定义getPagegetpagewriteExcelwriteexcelworkbookworkbooksheettablewrite_rowwriterowaddaddclosecloselenlengthlengthdatadatarangerangestr(string)stringappendappendauthorauthorselectselectBeautifulSoupsugarherdersheaderinformationresponsereadreaddecodecodeRequestrequestparseparsequotequote在线练习:https://www.520mg.com/itITGettingstarted感谢您的关注
