python抓取动态网页( 爬取猫眼电影的应用技巧和基本知识点的抓取教程)

优采云 发布时间: 2021-09-11 19:16

  python抓取动态网页(

爬取猫眼电影的应用技巧和基本知识点的抓取教程)

  python 网络爬虫(动态网页)

  时间:2021-08-08

  本文章向大家介绍python网络爬虫(动态网页),主要包括python网络爬虫(动态网页)用例、应用技巧、基础知识点总结和注意事项。有一定的参考价值,是需要的。朋友们可以参考一下。

  内容

  抓取动态网页

  新手开始学习爬虫,一般是从爬豆瓣开始。学会了爬豆瓣后,本来想爬其他网页玩的,后来就选择爬猫眼电影了。和豆瓣一样,我们进入猫眼电影,查看源码,可以看到很多我们想要的,但是用requests解析后,里面什么都没有。一开始还以为自己看错了,后来问了别人才知道,这是一个需要浏览器浏览的动态网页,或者是移动鼠标后才生成HTML代码。因此,为了能够顺便抓取到我们需要的信息,我们需要使用工具来模仿用户行为来生成HTML代码。

  分析网站

  解析网站时,使用requests库进行访问,也可以使用Xpath或BeautifulSoup进行解析。

  import requests

import lxml

from bs4 import BeautifulSoup

  def get_one_page(url):

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'}

response=requests.get(url,headers=headers)

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

titles = soup.find_all('title')

print(titles)

# if response.status_code==200:# 状态响应码为200 表示正常访问

# return response.text

# return None

def main():

url='https://maoyan.com/board/4?offset=0'

html=get_one_page(url)

# print(html)

main()

  分析以上代码,发现没有我们需要的内容

  显示最后一个

  什么都解析不了,应该是用Javascript动态生成信息,所以我也学了动态Javascript抓取教程。

  在 Python 中使用 Selenium 执行 JavaScript

  Selenium 是一个强大的网页抓取工具,最初是为网站automated 测试而开发的。 Selenium 可以让浏览器自动加载网站,获取需要的数据,甚至可以对网页进行截图,或者判断网站上是否发生了某些操作。

  安装 iSelenium

  首先安装 Selenium

  pip install Selenium

  下载 PhantomJS

  安装完成后,我们还需要安装PhantomJS。因为是全功能浏览器,不是python库,所以不能用pip安装

  浏览器输入

  根据需要自行下载,下载后解压,将解压包内的bin文件夹添加到环境变量中

  driver = webdriver.PhantomJS(executable_path=r'D:/phantomjs/phantomjs-2.1.1-windows/bin/phantomjs.exe')

driver.get('https://pythonscraping.com/pages/javascript/ajaxDemo.html')

time.sleep(3)

print(driver.find_element_by_id('content').text)

driver.close()

'''

Here is some important text you want to retrieve!

A button to click!

'''

  测试完成后,即可完成安装。

  网页抓取

  我们设置了一个等待时间,因为我们需要等待 Javascript 完全加载才能获取所有信息。

  代码如下:

  from selenium import webdriver #引入网页驱动包

import time

from selenium.webdriver.remote.webelement import WebElement

from selenium.common.exceptions import StaleElementReferenceException

def waitForLoad(driver):

elem = driver.find_element_by_tag_name("html")

count = 0

while True:

count += 1

if count > 20:

print('Timing out after 10 seconds and returning')

return

time.sleep(.5)

try:

elem == driver.find_element_by_tag_name('html')

except StaleElementReferenceException:

return

driver = webdriver.PhantomJS(executable_path=r'D:/phantomjs/phantomjs-2.1.1-windows/bin/phantomjs.exe')

url='https://maoyan.com/board/4?offset=0'

driver.get(url)

waitForLoad(driver) #等待网页JavaScript加载完成

print(driver.page_source)

driver.close() #最后要将driver关闭

  网页html的部分截图。

  成功爬取电影和爬取豆瓣是一样的。代码参考《Python Web Crawler 权威指南》

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线