最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python爬蟲包BeautifulSoup實例(三)

 更新時間:2018年06月17日 09:49:22   作者:SuPhoebe  
這篇文章主要為大家詳細(xì)介紹了Python爬蟲包BeautifulSoup實例,具有一定的參考價值,感興趣的朋友可以參考一下

一步一步構(gòu)建一個爬蟲實例,抓取糗事百科的段子

先不用beautifulsoup包來進(jìn)行解析

第一步,訪問網(wǎng)址并抓取源碼

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 16:16:08
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 20:17:13

import urllib
import urllib2
import re
import os

if __name__ == '__main__':
  # 訪問網(wǎng)址并抓取源碼
  url = 'http://www.qiushibaike.com/textnew/page/1/?s=4941357'
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  try:
    request = urllib2.Request(url = url, headers = headers)
    response = urllib2.urlopen(request)
    content = response.read()
  except urllib2.HTTPError as e:
    print e
    exit()
  except urllib2.URLError as e:
    print e
    exit()
  print content.decode('utf-8')

第二步,利用正則表達(dá)式提取信息

首先先觀察源碼中,你需要的內(nèi)容的位置以及如何識別
然后用正則表達(dá)式去識別讀取
注意正則表達(dá)式中的 . 是不能匹配\n的,所以需要設(shè)置一下匹配模式。

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 16:16:08
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 20:17:13

import urllib
import urllib2
import re
import os

if __name__ == '__main__':
  # 訪問網(wǎng)址并抓取源碼
  url = 'http://www.qiushibaike.com/textnew/page/1/?s=4941357'
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  try:
    request = urllib2.Request(url = url, headers = headers)
    response = urllib2.urlopen(request)
    content = response.read()
  except urllib2.HTTPError as e:
    print e
    exit()
  except urllib2.URLError as e:
    print e
    exit()

  regex = re.compile('<div class="content">.*?<span>(.*?)</span>.*?</div>', re.S)
  items = re.findall(regex, content)

  # 提取數(shù)據(jù)
  # 注意換行符,設(shè)置 . 能夠匹配換行符
  for item in items:
    print item

第三步,修正數(shù)據(jù)并保存到文件中

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 16:16:08
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 21:41:32

import urllib
import urllib2
import re
import os

if __name__ == '__main__':
  # 訪問網(wǎng)址并抓取源碼
  url = 'http://www.qiushibaike.com/textnew/page/1/?s=4941357'
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  try:
    request = urllib2.Request(url = url, headers = headers)
    response = urllib2.urlopen(request)
    content = response.read()
  except urllib2.HTTPError as e:
    print e
    exit()
  except urllib2.URLError as e:
    print e
    exit()

  regex = re.compile('<div class="content">.*?<span>(.*?)</span>.*?</div>', re.S)
  items = re.findall(regex, content)

  # 提取數(shù)據(jù)
  # 注意換行符,設(shè)置 . 能夠匹配換行符
  path = './qiubai'
  if not os.path.exists(path):
    os.makedirs(path)
  count = 1
  for item in items:
    #整理數(shù)據(jù),去掉\n,將<br/>換成\n
    item = item.replace('\n', '').replace('<br/>', '\n')
    filepath = path + '/' + str(count) + '.txt'
    f = open(filepath, 'w')
    f.write(item)
    f.close()
    count += 1

第四步,將多個頁面下的內(nèi)容都抓取下來

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 16:16:08
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 20:17:13

import urllib
import urllib2
import re
import os

if __name__ == '__main__':
  # 訪問網(wǎng)址并抓取源碼
  path = './qiubai'
  if not os.path.exists(path):
    os.makedirs(path)
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  regex = re.compile('<div class="content">.*?<span>(.*?)</span>.*?</div>', re.S)
  count = 1
  for cnt in range(1, 35):
    print '第' + str(cnt) + '輪'
    url = 'http://www.qiushibaike.com/textnew/page/' + str(cnt) + '/?s=4941357'
    try:
      request = urllib2.Request(url = url, headers = headers)
      response = urllib2.urlopen(request)
      content = response.read()
    except urllib2.HTTPError as e:
      print e
      exit()
    except urllib2.URLError as e:
      print e
      exit()
    # print content

    # 提取數(shù)據(jù)
    # 注意換行符,設(shè)置 . 能夠匹配換行符
    items = re.findall(regex, content)

    # 保存信息
    for item in items:
      #  print item
      #整理數(shù)據(jù),去掉\n,將<br/>換成\n
      item = item.replace('\n', '').replace('<br/>', '\n')
      filepath = path + '/' + str(count) + '.txt'
      f = open(filepath, 'w')
      f.write(item)
      f.close()
      count += 1

  print '完成'

使用BeautifulSoup對源碼進(jìn)行解析

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 16:16:08
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 21:34:02

import urllib
import urllib2
import re
import os
from bs4 import BeautifulSoup

if __name__ == '__main__':
  url = 'http://www.qiushibaike.com/textnew/page/1/?s=4941357'
  user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36'
  headers = {'User-Agent':user_agent}
  request = urllib2.Request(url = url, headers = headers)
  response = urllib2.urlopen(request)
  # print response.read()
  soup_packetpage = BeautifulSoup(response, 'lxml')
  items = soup_packetpage.find_all("div", class_="content")

  for item in items:
    try:
      content = item.span.string
    except AttributeError as e:
      print e
      exit()

    if content:
      print content + "\n"

這是用BeautifulSoup去抓取書本以及其價格的代碼
可以通過對比得出到bs4對標(biāo)簽的讀取以及標(biāo)簽內(nèi)容的讀取
(因為我自己也沒有學(xué)到這一部分,目前只能依葫蘆畫瓢地寫)

# -*- coding: utf-8 -*-
# @Author: HaonanWu
# @Date:  2016-12-22 20:37:38
# @Last Modified by:  HaonanWu
# @Last Modified time: 2016-12-22 21:27:30
import urllib2
import urllib
import re 

from bs4 import BeautifulSoup 


url = "https://www.packtpub.com/all"
try:
  html = urllib2.urlopen(url) 
except urllib2.HTTPError as e:
  print e
  exit()

soup_packtpage = BeautifulSoup(html, 'lxml') 
all_book_title = soup_packtpage.find_all("div", class_="book-block-title") 

price_regexp = re.compile(u"\s+\$\s\d+\.\d+") 

for book_title in all_book_title: 
  try:
    print "Book's name is " + book_title.string.strip()
  except AttributeError as e:
    print e
    exit()
  book_price = book_title.find_next(text=price_regexp) 
  try:
    print "Book's price is "+ book_price.strip()
  except AttributeError as e:
    print e
    exit()
  print ""

以上全部為本篇文章的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法

    Python?代替?xftp?從?Linux?服務(wù)器下載文件的操作方法

    我們經(jīng)常需要從Linux服務(wù)器上同步文件,但是xftp等工具都需要注冊了,這里用免費的Python代碼來下載文件,還可以擴展更多的自定義用法,這篇文章主要介紹了Python?代替?xftp?從?Linux?服務(wù)器下載文件,需要的朋友可以參考下
    2024-06-06
  • python中多層嵌套列表的拆分方法

    python中多層嵌套列表的拆分方法

    今天小編就為大家分享一篇python中多層嵌套列表的拆分方法,具有很好參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • python 多線程實現(xiàn)檢測服務(wù)器在線情況

    python 多線程實現(xiàn)檢測服務(wù)器在線情況

    本文給大家分享的是Python使用多線程通過ping命令檢測服務(wù)器的在線狀況,給大家了內(nèi)網(wǎng)和外網(wǎng)的2個例子,有需要的小伙伴可以參考下。
    2015-11-11
  • Python實現(xiàn)ElGamal加密算法的示例代碼

    Python實現(xiàn)ElGamal加密算法的示例代碼

    ElGamal加密算法是一個基于迪菲-赫爾曼密鑰交換的非對稱加密算法。這篇文章通過示例代碼給大家介紹Python實現(xiàn)ElGamal加密算法的相關(guān)知識,感興趣的朋友一起看看吧
    2020-06-06
  • 最新評論

    东至县| 敖汉旗| 石门县| 新营市| 黄平县| 蒙城县| 广元市| 霍林郭勒市| 民勤县| 茂名市| 饶河县| 禄劝| 康马县| 中宁县| 云和县| 太仆寺旗| 沾益县| 大名县| 普陀区| 林甸县| 寿宁县| 清丰县| 乌审旗| 特克斯县| 凭祥市| 景宁| 准格尔旗| 四平市| 视频| 北宁市| 改则县| 云阳县| 温州市| 云阳县| 保德县| 客服| 临颍县| 江达县| 漯河市| 普宁市| 保靖县|