python爬虫实现——爬取糗事百科的段子
一、python爬虫综述
一个简单的爬虫,两部分组成,下载html和解析html文档。我实现了一个爬取糗事百科的首页的笑话的网络爬虫,大家可以用来参考。
二、python爬虫开发环境的搭建
开发环境:python2.7(win10-64)
开发IDE:pycharm
三、爬虫的基本工作流程及框架:
1.获取url
2.用对应的url下载对应的html文件
3.设置条件从html文件中获取要抓取的东西
四、开始爬取
设置为utf-8标准字符
# coding=utf-8
载入对应模块
import requests from bs4 import BeautifulSoup
获取html的标准函数
def get_html(url): kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器访问 try: response = requests.get(url,headers=kv) response.raise_for_status()#如果返回的对象码不是200,将产生异常 response.encoding = 'utf-8' return response.text except: return "产生异常"
从html文件中设置条件筛选对应的笑话(在浏览器中查看源代码寻找笑话主体对应的标签)
def get_certain_joke(html,x): soup = BeautifulSoup(html, 'lxml') joke_content = soup.select('div.content')[x].get_text() return joke_content
定义主函数调用上述两个函数,这里我用了循环输出(输出10个笑话)
if __name__=="__main__": url = "https://www.qiushibaike.com" html = get_html(url) for i in range(1,21): i=i+1 joke_content = get_certain_joke(html,i) x=joke_content.strip() print (x) print ("\n")
下面是完整代码以及输出结果
# coding=utf-8 import requests from bs4 import BeautifulSoup a=() def get_html(url): kv = {'user-agent': 'Mozilla/5.0'} # 伪装成浏览器访问 try: response = requests.get(url,headers=kv) response.raise_for_status()#如果返回的对象码不是200,将产生异常 response.encoding = 'utf-8' return response.text except: return "产生异常" # 获取笑话 def get_certain_joke(html,x): """get the joke of the html""" soup = BeautifulSoup(html, 'lxml') joke_content = soup.select('div.content')[x].get_text() return joke_content
if __name__=="__main__": url = "https://www.qiushibaike.com" html = get_html(url) for i in range(1,21): i=i+1 joke_content = get_certain_joke(html,i) x=joke_content.strip() print (x) print ("\n")