python爬虫 - 爬取html中的script数据(36kr.com新闻信息)

1. 分析页面内容数据格式

  • 打开 https://36kr.com/

  • 按F12(或 在网页上右键 --> 检查(Inspect))

  • 找到网页上的Network(网络)部分

  • 鼠标点击网页页面,按 Ctrl + R 刷新网页页面,可以看到 NetWork(网络)部分会刷新出很多的网络信息

  • 在Name 列,找到 36kr.com 条目,右侧自动显示网页的相关内容:Headers, Preview, Response … …

  • 分析Response内容,所需要关心的内容,位于整个html页面的下面

在这里插入图片描述在这里插入图片描述

2. 使用re.findall方法,爬取新闻

要点:从 之间的数据都是json数据。 json.loads会自动将false转为False, true转为True


import re
import requests
import json


# URL路径
url = "https://36kr.com/"
response = requests.get(url)
str1 = response.content.decode()

# 查找,使用正在表达式->取数组的第一个
result = re.findall("<script>window.initialState=(.*?)</script>", str1)[0]

# 先写入到本地,再查看
with open("36kr.json", "w", encoding="utf-8") as f:
    f.write(result)
    
# 加载json转换成python类型
json_result = json.loads(result)
print(json_result)


# pretty print the data: 其中 json.dumps() 对数据格式进行了美化:
print(json.dumps(json_result, indent=4))

print(f'data.theme        = {json_result["theme"]}')
print(f'data.isSpider     = {json_result["isSpider"]}')

for item in json_result["channel"]:
    print(f'name = {item["name"]}, '
          f'key = {item["key"]} ')

运行结果:

在这里插入图片描述
在这里插入图片描述

3. 使用re.search 方法,爬取新闻

要点:从 之间的数据都是json数据。 json.loads会自动将false转为False, true转为True


import re
import json
import requests


# URL路径
url = "https://36kr.com/"
html_doc = requests.get(url).text


data = re.search(r"<script>window.initialState=(.*?)</script>", html_doc)
print(f"data = {data}")

json_result = json.loads(data.group(1))
print(f"json_data = {json_result}")

# pretty print the data:
print(f"json_dump = {json.dumps(json_result, indent=4)}")

print(f'data.theme        = {json_result["theme"]}')
print(f'data.isSpider     = {json_result["isSpider"]}')

for item in json_result["channel"]:
    print(f'name = {item["name"]}, '
          f'key = {item["key"]} ')


运行结果:

在这里插入图片描述
在这里插入图片描述

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您好!要使用Python爬取微博图文,您可以使用第三方库`Selenium`来模拟浏览器操作,或者使用`requests`和`BeautifulSoup`来解析网页数据。这里我提供一个使用`Selenium`的简单示例代码,供您参考: ```python from selenium import webdriver from selenium.webdriver.common.keys import Keys import time # 设置 Chrome 的驱动路径 driver_path = 'chromedriver.exe' # 请自行下载对应系统的 Chrome 驱动并指定路径 # 创建一个 Chrome 浏览器实例 browser = webdriver.Chrome(driver_path) # 打开微博登录页面 browser.get('https://weibo.com') # 等待页面加载完成 time.sleep(5) # 输入账号和密码并登录 username = browser.find_element_by_name("username") password = browser.find_element_by_name("password") username.send_keys("Your_Username") # 替换为您的微博账号 password.send_keys("Your_Password") # 替换为您的微博密码 password.send_keys(Keys.RETURN) # 等待登录成功,根据需要增加等待时间 time.sleep(10) # 在搜索框输入关键词并搜索 search_box = browser.find_element_by_xpath("//input[@node-type='searchInput']") search_box.send_keys("关键词") # 替换为您要搜索的关键词 search_box.send_keys(Keys.RETURN) # 等待页面加载完成 time.sleep(5) # 模拟滚动页面,加载更多数据 for i in range(5): browser.execute_script("window.scrollTo(0, document.body.scrollHeight);") time.sleep(3) # 获取页面的图文信息 articles = browser.find_elements_by_xpath("//div[@class='WB_feed_detail clearfix']") for article in articles: # 解析文章内容,并提取需要的信息 # ... # 关闭浏览器 browser.quit() ``` 请注意,使用第三方库爬取网站数据需要注意法律和道德规范,遵守网站的使用条款,并尊重他人的隐私。另外,微博的网页结构和规则可能会不断变化,以上代码仅供参考,具体操作还需要根据实际情况进行调整。希望对您有所帮助!如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牛魔王的小怪兽

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值