一个简单python爬虫的实现——爬取电影信息

本文介绍了如何使用Python的urllib和BeautifulSoup4库实现一个简单的网络爬虫,从电影天堂网站抓取电影名称和发布日期。通过设置headers模拟浏览器请求,解析GB2312编码的HTML,利用CSS选择器提取所需信息,揭示了爬虫工作的基本流程,同时指出爬虫技术需要结合前端知识,并面临反爬虫挑战。

最近在学习网络爬虫,完成了一个比较简单的python网络爬虫。首先为什么要用爬虫爬取信息呢,当然是因为要比人去收集更高效。

网络爬虫,可以理解为自动帮你在网络上收集数据的机器人。

网络爬虫简单可以大致分三个步骤:

第一步要获取数据,

第二步对数据进行处理,

第三步要储存数据。

获取数据的时候这里我用到了python的urllib标准库,它是python中非常方便抓取网页内容的一个模块。

具体为:

这里我要爬取的是电影天堂一个电影页面的电影名称,日期等数据。

from urllib import request
def get_data ( ):
    url='http://www.dytt8.net/html/gndy/dyzz/list_23_1.html'
    headers={
   
   'User-Agent': ' Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36' }
    req=request.Request(url, headers=headers)
    response=request.urlopen(req)
    # print (type(response)) #响应对象的类型
    # print(response.getcode()) #响应状态码
    # print(response.info())
    if response.getcode() == 200:
        data=response.read
在某些情况下,像淘宝这类页面,其 Ajax 接口参数复杂,包含加密密钥等,自行构造 Ajax 参数困难,此时使用 Selenium 是方便快捷的抓取方法。Selenium 可在浏览器中运行,模拟用户真实浏览网页操作,能实现浏览器加载页面、搜索关键字和点击翻页等操作,即使是使用异步加载技术的网页,也可模拟翻页获取不同网页的数据 [^1][^2]。 以下是一个简单示例代码,用于使用 Python 结合 Selenium 爬取淘宝商品信息实现翻页抓取: ```python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import time # 初始化浏览器 driver = webdriver.Chrome() # 打开淘宝页面 driver.get('https://www.taobao.com') # 定位搜索框并输入关键词 search_box = driver.find_element(By.ID, 'q') search_box.send_keys('手机') search_box.send_keys(Keys.RETURN) # 等待页面加载 WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'div.items div.item.J_MouserOnverReq')) ) # 模拟翻页 for i in range(3): # 这里设置翻页次数,例如翻 3 页 # 等待商品信息加载 time.sleep(3) # 获取当前页面商品信息 items = driver.find_elements(By.CSS_SELECTOR, 'div.items div.item.J_MouserOnverReq') for item in items: try: title = item.find_element(By.CSS_SELECTOR, 'div.row.row-2.title').text price = item.find_element(By.CSS_SELECTOR, 'strong').text print(f'商品标题: {title}, 价格: {price}') except Exception as e: print(f"Error: {e}") # 点击下一页 try: next_button = WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.CSS_SELECTOR, 'li.next')) ) next_button.click() except Exception as e: print(f"翻页失败: {e}") # 关闭浏览器 driver.quit() ``` 上述代码实现了打开淘宝页面,搜索“手机”关键词,然后模拟翻页 3 次,每次翻页后获取商品的标题和价格信息并打印。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值