admin 管理员组文章数量: 887016
今天在爬蓝鲸财经的新闻数据的时候,遇到了一个难题,如下api:
https://app.lanjinger/news/waterfall?type=6&marked=0&last_time=1572056322000&refresh_type=1
我发现里面控制翻页的参数是last_time,这是个啥东西?感觉它有点像时间戳诶,我就用时间戳转换工具试了一下,发现把它最后三个0去掉就是一个时间戳。
可是知道他是个时间戳又有什么用呢,依靠时间戳翻页我觉得好神奇,网上也查不到资料,这可难坏了我。正确的方向应该是想这个时间戳是哪来的,怎么靠这个时间戳就可以控制翻页,在这种思路下,很自然的想到了这个时间戳可能是具体新闻的时间戳,根据这个新闻的时间戳在后端数据库中取出最近的固定条数的新闻信息。结果被我一验证还真是,那这个问题到这边就完美解决了。
直接把我的代码扔出来把
# -*-coding:utf8 -*-
"""
uonxhou
这是一个蓝鲸财经的爬虫
"""
import re
import time
from queue import Queue
import requests
from bs4 import BeautifulSoup
from newspaper import Article
from newspaper import Config
from threading import Thread as Task
from common import api
class LanJinger:
def __init__(self, raw_url):
self.web_name = "蓝鲸财经"
self.raw_url = raw_url
# 创建 url 存储容器
self.url_queue = Queue()
# 创建 html 存储容器
self.news_link_queue = Queue()
# 创建 数据 存储容器
self.data_queue = Queue()
def get_url_list(self):
try:
url1 = self.raw_url
tpye_number = re.search(r'\/(\d+)\/', url1).group(1)
except Exception as e:
print(e)
print(url1)
html = requests.get(url1).text
soup = BeautifulSoup(html, 'lxml')
a_li = soup.find('div', attrs={
'telegraph_wrap'}).find_all('a')
# 往第二个容器中放入一个字典,包含具体新闻链接和时间戳
for item in a_li:
try:
print(item['href'])
pattern = re.compile(r'ctime="(\d+)"')
publish_time = pattern.search(str(item)).group(1)
dict_url_timestamp = {
'url': item['href'], 'time': publish_time}
self.news_link_queue.put(dict_url_timestamp)
except Exception as e<
版权声明:本文标题:爬虫遇到用时间戳作为翻页参数的网站怎么办 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1727769265h1160867.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论