python爬虫获取页面代码不全

python 爬取网页,网页显示不全,中间页面 的 数据没有显示
网站https://www.ppomppu.co.kr/zboard/zboard.php?id=freeboard&hotlist_flag=999

import http.client

conn = http.client.HTTPSConnection("www.ppomppu.co.kr")
payload = ''
headers = {
  'Cookie': 'PHPSESSID=3c36n51psju94quule678s0au7; nxc=nxc_1685177479; bl_bn=15; m_gad_pos_1=13; m_gad_pos_10=8; m_gad_pos_12=17; m_gad_pos_15=7; m_gad_pos_16=7; m_gad_pos_17=10; m_gad_pos_18=7; m_gad_pos_21=20; m_gad_pos_22=20; m_gad_pos_25=15; m_gad_pos_4=19; m_gad_pos_50=12; m_gad_pos_51=11; m_gad_pos_52=5; m_gad_pos_55=14; m_gad_pos_58=17; m_gad_pos_6=17; m_gad_pos_8=14; m_gad_pos_9=9; m_gad_pos_passback_1=1; m_gad_pos_passback_10=1; m_gad_pos_passback_12=1; m_gad_pos_passback_15=1; m_gad_pos_passback_16=1; m_gad_pos_passback_17=1; m_gad_pos_passback_18=1; m_gad_pos_passback_21=1; m_gad_pos_passback_22=1; m_gad_pos_passback_25=1; m_gad_pos_passback_4=1; m_gad_pos_passback_50=1; m_gad_pos_passback_51=1; m_gad_pos_passback_52=1; m_gad_pos_passback_55=1; m_gad_pos_passback_58=1; m_gad_pos_passback_6=1; m_gad_pos_passback_8=1; m_gad_pos_passback_9=1; rrr_banner=17; rrr_bn_h=1; ts_bn=21'
}
conn.request("GET", "/zboard/zboard.php?id=freeboard&hotlist_flag=999", payload, headers)
res = conn.getresponse()
data = res.read()
a=data.decode('euc-kr')
print(a)

页面表格内容 获取不了
需要获取的内容是

img

最好有源码,需要标题 时间 作者 和文章内容

您好!针对您的问题,在请求头中设置 cookie 可以使得爬取更加准确,但在我的测试中,该网站的反爬虫机制比较强,即使设置了 cookie 仍然会出现网页显示不全的情况。

一种可行的解决方法是使用 Selenium 等模拟浏览器的库,使得爬虫的行为与真实用户较为相似,较难被检测到。以下是使用 Selenium 和 BeautifulSoup 库爬取 PPOMPPU 网站的代码示例:

from selenium import webdriver
from bs4 import BeautifulSoup

url = 'https://www.ppomppu.co.kr/zboard/zboard.php?id=freeboard&hotlist_flag=999'
browser = webdriver.Chrome()  # 以 Chrome 浏览器为例
browser.get(url)  # 打开页面
source = browser.page_source  # 获取页面源代码
soup = BeautifulSoup(source, 'html.parser')  # 解析源代码
table = soup.find('table', {'class': 'board_table'})  # 定位表格元素
rows = table.find_all('tr')  # 获取所有行
for row in rows:
    cols = row.find_all('td')
    for col in cols:
        print(col.text.strip())  # 打印每个单元格的文字内容

以上代码可以爬取 PPOMPPU 网站的热门贴子表格,并输出每个单元格的文字内容。注意,使用 Selenium 等模拟浏览器的库一定程度上增加了运行时间和浏览器的资源消耗,需要根据需求进行权衡。另外,需要根据自己的情况进行相关库的下载和设置,比如在使用 Chrome 浏览器时需要下载对应的 chromedriver,并将其路径加入系统变量。

从代码来看,你是使用 Python 中的 http.client 库发送 HTTP 请求获取网页数据的,并且设置了一个 Cookie,这是一个基本的爬虫流程。

由于你提到页面显示不全,中间页面的数据没有显示,我猜测这可能是因为该网站可能使用了异步加载的技术,使得部分内容需要在页面加载完成后才会被动态地加载显示出来。

你可以尝试使用类似 selenium 这样的库来模拟浏览器生成请求,在请求的过程中等待页面加载完全。或者你也可以查看该网站是否提供 API 接口供你直接获取数据。

考虑到 selenium 是一个相对重量级的库,如果只是简单地获取网页数据而不需要进行交互式操作,你也可以使用更轻量级的库,例如 requestsbeautifulsouprequests 可以用于发送 HTTP 请求并获取网页数据,beautifulsoup 可以帮助你解析 HTML 页面并提取所需的数据。

  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7736283
  • 这篇博客你也可以参考下:【Python】编写一个Python 函数,可以接收任意多个整数,并输出其中的最大值和所有整数之和
  • 同时,你还可以查看手册:python- 预定义的清理操作 中的内容
  • 除此之外, 这篇博客: python列表的使用中的   在python中列表用方括号( [ ] )表示,并用逗号来分割其中的元素。下面是一个简单的列表示例,这个列表包含几种品牌的手机: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    print(phone[1])
    print(phone[0])
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone[-1])
    print(phone[-2])
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone[-1])
    phone[-1] = 'iPhone'
    print(phone[-1])
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    phone.append('OnePlus')
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    phone.insert(3,'vivo')
    phone.insert(1,'OPPO')
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    phone.insert(3,'vivo')
    phone.insert(1,'OPPO')
    print(phone)
    del phone[-1]
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    pop_phone = phone.pop()
    print(phone)
    print("本店将不再售卖" + pop_phone + "手机")
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    pop_phone1 = phone.pop(-1)
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    phone.remove('iphone')
    print(phone)
    phone = ['HuaWei','XiaoMi','MeiZu','iphone']
    print(phone)
    phone.remove('iphone')
    print(phone)
    remove_phone_name = 'iphone'
    print("本店不再销售" + remove_phone_name)
  • 您还可以看一下 李飞老师的Python数据分析与爬虫课程中的 Python爬虫:如何获取网页源代码中找不到的数据小节, 巩固相关知识点

应该是被服务端那边拦截了。在header里面多加点参数吧