好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

关于简单的python爬取网页流程

  代码一共分为4部分:

  第一部分:找一个网站。

  我这里还是找了一个比较简单的网站,

  大家可以登录里面看一下。

  这里大家可能会有一些库没有进行安装,先上图让大家安装完爬取网页所需要的库,其中我本次用到的库有:bs4,urllib,xlwt, re。

  这里选择file-setting-Project-然后选择左下角的加号,自行去安装自己所需要的文件就可以了。

  下面的代码是爬取网页的源代码:

  import urllib.request

  from bs4 import BeautifulSoup

  import xlwt

  import re

  def main():

  # 爬取网页

  baseurl = 'https……start='

  datalist = getData(baseurl)

  savepath = '豆瓣电影Top250.xls'

  # 保存数据

  saveData(datalist,savepath)

  # askURL("https://movie.douban测试数据/top250?start=1")

  #影片详情的规则

  findLink = re测试数据pile(r'') #创建从正则表达式,表示规则

  findImgSrc = re测试数据pile(r'

  #影片的片名

  finTitle = re测试数据pile(r'(.*)')

  #影片的评分

  findReating = re测试数据pile(r'(.*)')

  #找到评价人数

  findJudge = re测试数据pile(r'(\d*)人评价')

  #找到概况

  findInq = re测试数据pile(r'(.*)')

  #找到影片的相关内容

  findBb = re测试数据pile(r'

  (.*?)

  ', re.S)#re.S忽视换行符

  第二部分:爬取网页。

  def getData(baseurl):

  datalist = []

  for i in range(0, 10):

  url = baseurl + str(i*25)

  html = askURL(url) #保存获取到的网页源码

  #对网页进行解析

  soup = BeautifulSoup(html, 'html.parser')

  for item in soup.find_all('div', class_="item"): #查找符合要求的字符串 形成列表

  #print(item) #测试查看电影信息

  data = []

  item = str(item)

  link = re.findall(findLink, item)[0] #re库用来查找指定的字符串

  data.append(link)

  imgSrc = re.findall(findImgSrc, item)[0]

  data.append(imgSrc) #添加图片

  titles = re.findall(finTitle, item) #

  if (len(titles) == 2):

  ctitle = titles[0] #添加中文名

  data.append(ctitle)

  otitle = titles[1].replace("/", "") #replace("/", "")去掉无关的符号

  data.append(otitle) #添加英文名

  else:

  data.append(titles[0])

  data.append(' ')#外国名字留空

  rating = re.findall(findReating, item)[0] #添加评分

  data.append(rating)

  judgeNum = re.findall(findJudge,item) #评价人数

  data.append(judgeNum)

  inq = re.findall(findInq, item) #添加概述

  if len(inq) != 0:

  inq = inq[0].replace(".", "") #去掉句号

  data.append(inq)

  else:

  data.append(" ") #留空

  bd = re.findall(findBb,item)[0]

  bd = re.sub('(\s+)?',' ', bd) #去掉br 后面这个bd表示对bd进行操作

  bd = re.sub('/', ' ', bd) #替换/

  data.append(bd.strip()) #去掉前后的空格strip()

  datalist.append(data) #把处理好的一部电影放入datalist当中

  return datalist

  第三部分:得到一个指定的url信息。

  #得到指定的一个url网页信息

  def askURL(url):

  head = {

  "User-Agent": "Mozilla/5.0 ( Linux ; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36"

  }

  request = urllib.request.Request(url,headers=head) # get请求不需要其他的的,而post请求需要 一个method方法

  html = ""大连人流哪家好 http://mobile.fkyy120.net/

  try:

  response = urllib.request.urlopen(request)

  html = response.read().decode('utf-8')

  # print(html)

  except Exception as e:

  if hasattr(e,'code'):

  print(e.code)

  if hasattr(e,'reason'):

  print(e.reason)

  return html

  第四部分:保存数据

  # 3:保存数据

  def saveData(datalist,savepath):

  book = xlwt.Workbook(encoding="utf-8", style_compression=0)

  sheet = book.add_sheet('电影Top250', cell_overwrite_ok=True)

  col = ('电影详情链接', '图片链接', '影片中文名', '影片外国名', '评分', '评价数', '概况', '相关信息')

  for i in range(0,8):

  sheet.write(0,i,col[i]) #列名

  for i in range(0,250):

  print("第%d条"%i)

  data = datalist[i]

  for j in range(0,8):

  sheet.write(i+1,j,data[j])

  book.save(savepath) #保存

查看更多关于关于简单的python爬取网页流程的详细内容...

  阅读:51次