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)
页面表格内容 获取不了
需要获取的内容是
最好有源码,需要标题 时间 作者 和文章内容
您好!针对您的问题,在请求头中设置 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
是一个相对重量级的库,如果只是简单地获取网页数据而不需要进行交互式操作,你也可以使用更轻量级的库,例如 requests
和 beautifulsoup
。 requests
可以用于发送 HTTP 请求并获取网页数据,beautifulsoup
可以帮助你解析 HTML 页面并提取所需的数据。
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)
应该是被服务端那边拦截了。在header里面多加点参数吧