首页 > 编程 > Python > 正文

python用BeautifulSoup库简单爬虫实例分析

2020-01-04 14:49:19
字体:
来源:转载
供稿:网友

会用到的功能的简单介绍

1、from bs4 import BeautifulSoup

#导入库

2、请求头herders

headers={'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36','referer':"www.mmjpg.com" }all_url = 'http://www.mmjpg.com/' 'User-Agent':请求方式 'referer':从哪个链接跳转进来的

3、建立连接

start_html = requests.get(all_url, headers=headers)all_url:起始的地址,也就是访问的第一个页面headers:请求头,告诉服务器是谁来了。requests.get:一个方法能获取all_url的页面内容并且返回内容。

4、解析获取的页面

Soup = BeautifulSoup(start_html.text, 'lxml')BeautifulSoup:解析页面lxml:解析器start_html.text:页面的内容

5、处理获取的页面

all_a = Soup.find('div', class_='pic').find_all('a')[-2]Soup.find()查找某一个find_all()查找所有的,返回一个列表.find('img')['src']  :获取img的src链接属性  class__:获取目标的类名div/a:类型条件为div/a的[-2]可以用来去掉最后多匹配的标签,这里表示去掉最后两个a标签

6、获取目标内容

<a href =# >内容</a>a[i]/get_text():获取第i个a标签里面的内容

7、可能用到的其他功能介绍:

1、文件夹创建与切换

os.makedirs(os.path.join("E:/name", filename))#在目录E:/name下创建名为filename的文件夹os.chdir("E:/name//" + filename)#切换工作路径到E:/name/filename下

2、文件保存

f = open(name+'.jpg', 'ab')##写入多媒体文件必须要 b 这个参数!f.write(img.content) ##多媒体文件要是用conctent!f.close()

案例:爬取妹纸图

  import requestsfrom bs4 import BeautifulSoupimport os#导入所需要的模块class mzitu():  def all_url(self, url):    html = self.request(url)##    all_a = BeautifulSoup(html.text, 'lxml').find('div', class_='all').find_all('a')    for a in all_a:      print('------开始保存:', title)       path = str(title).replace("?", '_') ##替换掉带有的?      self.mkdir(path) ##调用mkdir函数创建文件夹!这儿path代表的是标题title      href = a['href']      self.html(href)   def html(self, href):  ##获得图片的页面地址    html = self.request(href)    max_span = BeautifulSoup(html.text, 'lxml').find('div', class_='pagenavi').find_all('span')[-2].get_text()    #这个上面有提到    for page in range(1, int(max_span) + 1):      page_url = href + '/' + str(page)      self.img(page_url) ##调用img函数  def img(self, page_url): ##处理图片页面地址获得图片的实际地址    img_html = self.request(page_url)    img_url = BeautifulSoup(img_html.text, 'lxml').find('div', class_='main-image').find('img')['src']    self.save(img_url)  def save(self, img_url): ##保存图片    name = img_url[-9:-4]    img = self.request(img_url)    f = open(name + '.jpg', 'ab')    f.write(img.content)    f.close()  def mkdir(self, path): ##创建文件夹    path = path.strip()    isExists = os.path.exists(os.path.join("E:/mzitu2", path))    if not isExists:      print('建了一个名字叫做', path, '的文件夹!')      os.makedirs(os.path.join("E:/mzitu2", path))      os.chdir(os.path.join("E:/mzitu2", path)) ##切换到目录      return True    else:      print( path, '文件夹已经存在了!')      return False  def request(self, url): ##这个函数获取网页的response 然后返回    headers = {      'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.110 Safari/537.36',      'referer':#伪造一个访问来源 "http://www.mzitu.com/100260/2"    }    content = requests.get(url, headers=headers)    return content#设置启动函数def main():  Mzitu = mzitu() ##实例化  Mzitu.all_url('http://www.mzitu.com/all') ##给函数all_url传入参数 main()


注:相关教程知识阅读请移步到python教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表