php登录抓取网页指定内容(Excel表存储数据利用Python库xlwt将抽取的数据写入Excel表格)

优采云 发布时间: 2022-01-21 04:14

  php登录抓取网页指定内容(Excel表存储数据利用Python库xlwt将抽取的数据写入Excel表格)

  解析页面内容使用BeautifulSoup定位特定标签位置使用正则表达式查找特定内容标签解析

  BeautifulSoup 提供 Python 中的函数来处理导航、搜索、修改解析树等,并为用户提供解析文档需要抓取的数据。

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

for item in soup.find_all('div',class_="item")

  创建一个Beautiful Soup对象,html为页面内容,html.parser为页面解析器

  找到能完整提取视频内容的item,即页面中所有style为item类的div

  正则表达式

  Python中使用re操作正则表达式

  使用正则表达式预先定义一些特定的字符串和特定字符的组合,形成规则字符串来过滤字符串。

  用于存储数据的 Excel 表

  使用 Python 库 xlwt 将提取的数据写入 Excel 表

  首先创建一个 utf-8 编码的 Excel 对象

  接下来,创建一个工作表

  然后将内容写入单元格

  最后保存表格

  

  抢top250

  导入相关库

  from bs4 import BeautifulSoup #网页解析,获取数据

import re #正则表达式,进行文字匹配

import urllib.request,urllib.error #制定URL,获取网页数据

import xlwt #进行Excel操作

  定义主函数

  def main():

baseurl ="https://movie.douban.com/top250?start="

datalist = getData(baseurl) #1.爬取网页

savepath = ".\\豆瓣电影TOP250.xls"

saveData(datalist,savepath) #3.保存数据

  使用正则表达式制定获取文本内容的规则

  #获取影片链接规则

findlink = re.compile(r&#39;<a href="(.*?)">&#39;) #创建正则表达式对象,表示规则,即字符串的模式

#获取影片图片

findimage =re.compile(r&#39;&#39;,re.S) #re.s 让换行符包含在字符中

#影片片名

findtitle = re.compile(r&#39;(.*)&#39;)

#影片评分

findrating = re.compile(r&#39;(.*)&#39;)

#评价人数

findjudge = re.compile(r&#39;(.*)人评价&#39;)

#影片概况

findthing = re.compile(r&#39;(.*)&#39;)

#影片相关内容

findbd = re.compile(r&#39;<p class="">(.*?)&#39;,re.S)</p>

  爬网

  def getData(baseurl):

datalist = []

for i in range(0,10):

url = baseurl +str(i*25)

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

  一个一个地解析数据

  保存数据

  def saveData(datalist,savepath):

print("save")

book = xlwt.Workbook(encoding="utf-8",style_compression=9) #创建workbook对象

sheet = book.add_sheet("豆瓣电影TOP250") #创建工作表

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

for i in range(0,8):

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

for i in range(0,250):

print("第%d条"%(i+1))

data = datalist[i]

for j in range(0,8):

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

book.save("TOP250.xls")

   得到指定一个URL的网页内容

  def askURl(url):

head ={"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/11"}

request = urllib.request.Request(url,headers=head)

html = ""

try:

response = urllib.request.urlopen(request)

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

except urllib.error.URLError as e:

if hasattr(e,"code"):

print(e.code)

if hasattr(e,"reason"):

print(e.reason)

return html

  你还是得伪装,否则你会被识破的。

  实施

  #当程序执行时

if __name__=="__main__":

main() #调用函数

  

  笔记

  爬豆瓣的整体工作已经完成,但是细节还需要多练习,可以进一步完善。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线