python - 如何将页码作为变量

时间:2017-05-18 08:56:35

标签: python beautifulsoup

我试图废弃一些电影评论和评分,如果没有更多评论和评分,我试图结束此代码。

page = 1  #'variable' page
blankList = []
while True:
    url = "http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=99715&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page={}".format(page) 
    res = requests.get(url)
    bs = BeautifulSoup(res.text, "lxml")
    valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

    ###the upper code won't work when 'variable page' is bigger than 'maximum page'. if so, it returns blank List.

    page = page + 1
    score_result = bs.find("div", {'class': 'score_result'})
    for review_one in score_result.findAll('li'):
        score = int(review_one.find("div", {'class': 'star_score'}).find('em').text)
        reple = review_one.find('div',{'class': 'score_reple'}).find('p')
        for span in reple.findAll('span'):
            span.extract()
        reple = reple.text
        print("reple: {}, score: {}".format(reple, score))

    if (valueList == blankList):
        break

所以我遇到的问题有点简单。你可能知道这部分不起作用

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

假设最大页码为100,当我在variable页面输入20时,

url = "http://movie.naver.com/movie/bi/mi/pointWriteFormList.nhn?code=99715&type=after&isActualPointWriteExecute=false&isMileageSubscriptionAlready=false&isMileageSubscriptionReject=false&page={}".format(page)

这部分没有问题,当我尝试在这里输入20(实际页码)

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

它将返回此列表。

['input id="page" name="page" type="hidden" value="20"/>]

但是当我尝试输入200(在他们两个中) 第一个代码不会显示错误,但

valueList = bs.findAll("input",{'value':"{}"}).format(str(page))

它返回空白列表,因为没有页码200。

我需要的是:

  1. 在此列表中提取value的值,并将其设置为变量。 在这个列表中,我需要的是87.

    ['input id =“page”name =“page”type =“hidden”value =“87”/>]

    1. 有没有办法将变量放入findAll函数?

      • 当我运行此代码时,此列表会弹出 bs.findAll("input")
          
            
              

        ['input type =“hidden”name =“onlyActualPointYn”id =“onlyActualPointYn”value =“N”>,'input type =“hidden”name =“movieCode”id =“movieCode”value =“99715 “>,'input type =”hidden“name =”order“id =”order“value =”sympathyScore“>,'input type =”hidden“name =”page“id =”page“value =”75 “>,'input type =”hidden“name =”point“id =”point“value =”0“>]

            
          

1 个答案:

答案 0 :(得分:0)

请更改下面提到的行

valueList = bs.findAll("input",{'value':"{}".format(str(page))})

此程序不会退出,因为每个页码都是此网址的有效页码。如果你五个777777777,它也是一个有效的页码。你可以在浏览器中试试。

输出:

reple: 이영화 시사회에서 봤는데 15세는 진짜 말이 안된다. 그래도 엄청 재밌습니다.  , score: 10