鱼C论坛

 找回密码
 立即注册
查看: 3685|回复: 4

爬虫时目标网页显示URL与实际URL不一样

[复制链接]
发表于 2017-10-13 23:33:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. from urllib import request
  2. from urllib import parse
  3. from bs4 import BeautifulSoup

  4. def 读取网页(页数,关键词):
  5.     关键词 = parse.urlencode({'tag':关键词})
  6.     url = ''.join(['https://www.pixiv.net/novel/tags.php?',关键词,'&order=date_d&mode=safe&p=%s'%页数])
  7.     req = request.Request(url)
  8.     req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36')
  9.     response = request.urlopen(url)
  10.     html = response.read()
  11.     soup = BeautifulSoup(html,"html.parser")
  12.     return soup

  13. def main():
  14.     记录 = []
  15.     每页个数 = 12
  16.     page = 1
  17.     keyword = input('输入要查询的关键字: ')
  18.     soup = 读取网页(1,keyword)
  19.     总数 = int(soup.find('span',class_='count-badge').text.replace('件',''))
  20.     总页数 = (总数+每页个数-1)//每页个数

  21.     while 1:
  22.         for each in soup.find_all('div',class_='_ui-tooltip bookmark-box'):
  23.             if 'response'not in each.a['class'][0]:
  24.                 书签 = int(each.text)
  25.                 ID = each.a['href'].split('id=')[1]
  26.                 记录.append((书签,ID))
  27.         if page == 总页数:
  28.             print('结束')
  29.             break
  30.         page += 1
  31.         soup = 读取网页(page,keyword)
  32.             
  33.     记录.sort(reverse=True)
  34.     with open('排序.txt','a') as f:
  35.         for each in 记录:
  36.             f.writelines('https://www.pixiv.net/novel/show.php?id=%s : %s个书签\n'%(each[1],each[0]))

  37. if __name__ == '__main__':
  38.     main()
复制代码


  这是我写的将pixiv的小说通过书签数量排序的代码。windows 10,python 3.6.2.能够正常运行,获取小说id和书签数量都能实现.但是在翻页上出了问题。
  从网页上看,pixiv的URL是将
https://www.pixiv.net/novel/tags.php?tag=日常の謎&order=date_d&p=1 最后的p=1改成p=n来翻页的。但这只在目标小说少于10页时有效,当页数大于10时,从11页开始每一页的URL都会指向第十页.而直接在浏览器上打开11页,源代码是正常的11页内容,network里的Request URL也是p=n。而这个有196页的小说https://www.pixiv.net/novel/tags.php?tag=氷菓o&rder=date_d&p=1,从11页开始都只能获取第十页的内容.
  另外,我修改了关于这个网站的host,不知道有没有什么影响。
  请问这种情况要怎么解决?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-14 02:08:14 | 显示全部楼层

回帖奖励 +5 鱼币

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-10-14 09:50:18 | 显示全部楼层
会不会偷偷的请求了,还是f12下network。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-10-14 10:42:50 | 显示全部楼层
这是为了安全起见,网页会只显示真实url的一部分
这是在配置服务器的时候设置的,有的时候没有指定具体页面的时候会设置默认访问某些页面,比如默认访问index.html等,此时http://xxx.com显示的其实是http://xxx.com/index.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-14 11:38:39 | 显示全部楼层
好吧,登录了就可以了,原来是因为不登录只能看到10页内容......
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-12-24 09:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表