一、requests库基础知识

Requests的方法

requests库的response对象

二、爬取网站所需信息

1.访问网站,如图1-1所示:

图1-1

2.点击子页面,审查网页元素,部分内容如图1-2所示:

图1-2

3.实现代码如下:

#coding:utf-8importrequestsfrombs4importBeautifulSoupimportxlsxwriter#定义网页内容获取函数GET_HTML_CONTENTdefGET_HTML_CONTENT(url):#定义user_agent,模拟浏览器访问网页user_agent='Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)\Chrome/63.0.3239.132Safari/537.36'headers={'User-Agent':user_agent}r=requests.get(url,headers=headers)#获取网页内容html_str=r.textreturnhtml_str#定义子网页URL获取函数GET_CHILD_URLdefGET_CHILD_URL(content):data=BeautifulSoup(content,"html.parser")genre_session=data.find_all('li',attrs={'class':"mediumlistboxgroup"})#定义一个空列表childurl存放类别名称及子网页URLchildurl=[]forsessioningenre_session:elements=session.find_all('h4',attrs={'class':"heading"})forelementinelements:genre={}genre['name']=element.find('a').textgenre['nextpage']=element.find('a')['href']childurl.append(genre)returnchildurl#定义子网页内容处理函数GET_CHILD_INFOdefGET_CHILD_INFO(content,kind):data=BeautifulSoup(content,"html.parser")book_session=data.find_all('ol',attrs={'class':"alphabetfandomindexgroup"})items=book_session[0].find_all('ul',attrs={'class':"tagsindexgroup"})#定义一个空列表books存放书的类别、名称及评论数books=[]foriteminitems:book={}book['kinds']=kindbook['name']=item.find('a').textbook['reviews']=item.text.strip().split('\n')[-1].strip().strip('()')books.append(book)returnbooksif__name__=='__main__':url='https://archiveofourown.org/media'content=GET_HTML_CONTENT(url)childurl=GET_CHILD_URL(content)row=1col=0data=[[u'类别',u'名称',u'评论数']]workbook=xlsxwriter.Workbook("data.xlsx")worksheet=workbook.add_worksheet()worksheet.write_row(0,0,data[0])forkinchildurl:kind=k['name']nexturl=k['nextpage']geturl='https://archiveofourown.org'+nexturltxt=GET_HTML_CONTENT(geturl)books=GET_CHILD_INFO(txt,kind)forinfoinbooks:worksheet.write(row,col,info['kinds'])worksheet.write(row,col+1,info['name'])worksheet.write(row,col+2,info['reviews'])row+=1workbook.close()

4.运行结果如图1-3所示:

图1-3