|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位前辈,在下爬虫新手 ,
最近在做蚂蜂窝网站的游记文本爬取工作,发现一个问题,在爬取游记文本的过程中,只能获得网页上一部分的文本,并不能将游记全文全部获取,想请教各位前辈,这是我代码编写的问题,还是网站对爬虫有所限制?
还请各位指教
代码如下:
- from bs4 import BeautifulSoup
- import urllib
- import time
- html = urllib.request.urlopen("http://www.mafengwo.cn/i/9444273.html")
- bsObj = BeautifulSoup(html, 'html.parser')
- t1 = bsObj.find('div',class_="main")
- t2 = t1.find('div',class_="view clearfix")
- t3 = t1.find('div',class_="view_con")
- t4 = t3.find('div',class_="vc_article")
- t5 = t4.find('div', class_='va_con _j_master_content')
- t6 = t5.find('div', class_='_j_content_box')
- t7 = t6.find_all('p',class_='_j_note_content _j_seqitem')
- for t in t7:
- h2 = t.get_text()
- print(h2)
- time.sleep(2)
复制代码
本帖最后由 wongyusing 于 2018-9-27 17:13 编辑
这是因为网页加载问题吧,你一开始获取的页面是未全部加载完成的页面。
我们人类浏览的时候,是通过把页面往下拉,才能获取到所有内容。
你用开发者工具浏览一下,当拖动页面时,请求了什么内容。
因为js会请求后端获取内容的。
- <script>
- //判断是否显示 下拉bar
- ;(function () {
- window.showBarFlag = true;
- var realPathName = location.pathname,$nav = $('#Js_middleNav');
- var regExp = /localdeals|sales|flight|insurance|activity/gi;
- var pathArr = realPathName.match(regExp);
- if(window.Env.middleNavHide) { $('.dropdown-bar').hide();return;}
- if(realPathName == '/sales/0-0-0-5-0-0-0-0.html' || window.Env.salesType ==5){
- $nav.children('[data-type="cruise"]').addClass('on');
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }else if(realPathName == '/localdeals/0-0-0-21-0-0-0-0.html' || window.Env.salesType ==21){
- $nav.children('[data-type="wifi"]').addClass('on');
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }else if(window.Env.sales_title_tag == 'visa' || window.Env.salesType == 4){
- $nav.children('[data-type="visa"]').addClass('on');
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }else if(window.Env.sales_title_tag == 'semi_self_service' || realPathName == '/sales/0-0-0-6-0-0-0-0.html?group=4' || window.Env.salesType == 30 || window.Env.salesType == 6){
- $nav.children('[data-type="freewalker"]').addClass('on');
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }
- else if(window.Env.salesType) {
- switch(window.Env.salesType|0) {
- case 1:
- case 3:
- $nav.children('[data-type="sales"]').addClass('on');
- break;
- case 2:
- $nav.children('[data-type="localdeals"]').addClass('on');
- break;
- case 30:
- case 6:
- $nav.children('[data-type="freewalker"]').addClass('on');
- break;
- default:
- $nav.children('[data-type="localdeals"]').addClass('on');
- break;
- }
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }
- else {
- if( pathArr){
- if(pathArr.length == 1 && pathArr[0] != 'activity'){
- switch(pathArr[0]){
- case 'localdeals':
- $nav.children('[data-type="localdeals"]').addClass('on');
- break;
- case 'insurance':
- $nav.children('[data-type="insurance"]').addClass('on');
- break;
- case 'sales':
- $nav.children('[data-type="sales"]').addClass('on');
- break;
- case 'flight':
- $nav.children('[data-type="flight"]').addClass('on');
- break;
- default:
- break;
- }
- window.showBarFlag = false;
- $('.dropdown-bar').show();
- }else {
- if('activity'.indexOf(pathArr) != -1){
- window.showBarFlag = true;
- $('.dropdown-bar').hide();
- }
- }
- }
- }
- // 点击时触发
- $('.ul-dropdown-bar > li').on('click',function () {
- $(this).addClass('on').siblings().removeClass('on');
- });
- })();
- </script>
复制代码
|
|