鱼C论坛

 找回密码
 立即注册
查看: 1020|回复: 13

请问要爬这样的网站该从哪里突破?

[复制链接]
发表于 2018-10-5 14:03:30 | 显示全部楼层 |阅读模式

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

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

x
连接:
https://www.homes.co.jp/realtor/hiroshima/hiroshima/list/?page=1

https://www.homes.co.jp/realtor/mid-111287hfEdaK_ZQLCw/

用request去请求后返回的是说浏览器没有启动JavaScript
那么请问这种网站该从何处下手呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-5 14:20:17 | 显示全部楼层
鱼C论坛的都精通八国语言的吗,,,,,你想要爬啥,你想说ajax动态加载的网页怎么爬吗?方法一,解析真实网址和参数(需要相关的知识储备),方法二,Selenium,(需要弄明白这个东西,难点会在浏览器和版本不匹配,各种bug)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 14:40:40 | 显示全部楼层
RIXO 发表于 2018-10-5 14:20
鱼C论坛的都精通八国语言的吗,,,,,你想要爬啥,你想说ajax动态加载的网页怎么爬吗?方法一,解析真实 ...

我是想要爬店名,地址,电话号码的。基本简单的爬虫我会写,这个也不是ajax的动态页面。一眼看上去是个静态页面
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-5 16:19:36 | 显示全部楼层
chobi 发表于 2018-10-5 14:40
我是想要爬店名,地址,电话号码的。基本简单的爬虫我会写,这个也不是ajax的动态页面。一眼看上去是个静 ...

呃,那么难点在哪里啊,不是挨个爬取进入详情页的网址然后爬取详细的店名,地址,电话,不久好了吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 16:24:07 | 显示全部楼层
RIXO 发表于 2018-10-5 16:19
呃,那么难点在哪里啊,不是挨个爬取进入详情页的网址然后爬取详细的店名,地址,电话,不久好了吗?
import requests
from bs4 import BeautifulSoup

urls = "https://www.homes.co.jp/realtor/hiroshima/hiroshima/list/?page=1"
content = requests.get(urls).content
soup = BeautifulSoup(content, 'html.parser')
print(soup)

<h2 style="margin-top: 0;">リクエストがブロックされました!</h2>
<p>あなたのリクエストがボットからのアクセスと判断されました

帮你翻译一下,请求被禁止,你的请求被判断为由bot发起的。

你可以直接试试看。要是这么简单我就不来麻烦大家了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-5 17:02:17 | 显示全部楼层
RIXO 发表于 2018-10-5 14:20
鱼C论坛的都精通八国语言的吗,,,,,你想要爬啥,你想说ajax动态加载的网页怎么爬吗?方法一,解析真实 ...

搞了一圈,打算还是要用Selenium
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-5 17:24:10 | 显示全部楼层
chobi 发表于 2018-10-5 17:02
搞了一圈,打算还是要用Selenium

呃,我找到了是他cookie里面的一个值      _atrk_sessidx   的原因     这个网站限制了session访问次数,因此用Selenium不一会也会被封的,只有不断的重新申请session  id      才可以绕过限制,然后在cookie里面把 _atrk_sessidx =1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-6 16:20:09 | 显示全部楼层
我爬出来了。  
import requests
import re
from bs4 import BeautifulSoup as bs

# 打开网页函数
def get_response(url):
    headers = {
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
        'Accept-Encoding': 'gzip, deflate, br',
        'Accept-Language': 'zh-CN,zh;q=0.9',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive',
        'Cookie':'xxxx',

        'Pragma': 'no-cache',
        'Referer': 'https://www.homes.co.jp/realtor/hiroshima/hiroshima/list/?page=1',
        'Upgrade-Insecure-Requests': '1',
        'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'

        }
    params = {'page': '1'}
    response = requests.get(url, headers=headers,params=params) # 加上浏览器头,以防被禁
    response.encoding = 'utf-8'      # 指定编码格式
    #response.encoding = 'gbk'      # 指定编码格式
    return response

def main():
    base_url = 'https://www.homes.co.jp/realtor/hiroshima/hiroshima/list/?page=1'
    response = get_response(base_url)
    #print(response.text)
    soup = bs(response.text,'lxml')

    items = {}
    #print(soup.select('.wrap-realtorList'))
    for item in soup.select('.wrap-realtorList'):
        items['title'] = item.select('.mod-realtorBuilding .heading')
        print(items['title'])

if __name__ == "__main__":
    main()

那个饼干就用xxxx代替了。  
发饼干的英文需要审核。  
问题在于你需要更多的header和一个params参数才能获取到数据。  
还有,这个网站反爬很厉害,像楼上所说的限制了session访问次数。  
并且,饼干经常变化,找不到规律。  
  
你可以用隐身窗口打开这个网站获取饼干。  
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-6 16:30:38 | 显示全部楼层
如果用Selenium的话,由于我没有去测试,不知道这个网站检不检查来源IP这个方面。   
如果该网站没有检查IP的话。  
可以用Selenium去撞它 。  
由于Selenium打开一个窗口是默认的隐身窗口  
在数据获取部分写一个try方法。
  
能获取数据就获取,  

不能呢个获取数据就关闭浏览器,  
再重新打开浏览器来请求该网址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-6 18:39:40 From FishC Mobile | 显示全部楼层
wongyusing 发表于 2018-10-6 16:30
如果用Selenium的话,由于我没有去测试,不知道这个网站检不检查来源IP这个方面。   
如果该网站没有检查 ...

兄弟可以呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-6 19:39:56 | 显示全部楼层

运气而已
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 11:00:44 | 显示全部楼层
wongyusing 发表于 2018-10-6 16:30
如果用Selenium的话,由于我没有去测试,不知道这个网站检不检查来源IP这个方面。   
如果该网站没有检查 ...

试了一下。selenium开了两次页面就被ban了。应该是查了ip的。现在来我正常访问网页也被ban了。这网站真的有点厉害。我都想放个有偿任务去坑一下同行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-7 11:35:55 | 显示全部楼层
chobi 发表于 2018-10-7 11:00
试了一下。selenium开了两次页面就被ban了。应该是查了ip的。现在来我正常访问网页也被ban了。这网站真的 ...

你试一下,刷新页面,
昨天,我用隐身窗口打开的话,第一次是看不了页面的,要刷新一下才能看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-10-7 19:09:05 | 显示全部楼层
本帖最后由 chobi 于 2018-10-7 19:15 编辑
wongyusing 发表于 2018-10-7 11:35
你试一下,刷新页面,
昨天,我用隐身窗口打开的话,第一次是看不了页面的,要刷新一下才能看到

试过了。截图如下。被ban了
看来这个难度真的有点高。。。
除非能伪装成Googlebot,但是这个超出了我的知识范围
屏幕快照 2018-10-07 上午5.20.05.png
屏幕快照 2018-10-07 上午5.20.05.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-7 11:24

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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