请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

name取为空

图片描述
name昨天还是能取到值的,今天再运行就一直取的都是空值,打印出来的html链接点进去是京东登录的界面,是不是因为这个原因啊?老师有没有什么反爬的方法吗?

正在回答

2回答

bobby 2020-08-03 09:46:36

加上user-agent就行了

import json

import requests

from scrapy import Selector


def parse_good(good_id):
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.89 Safari/537.36'}
    good_url = "https://item.jd.com/{}.html".format(good_id)
    html = requests.get(good_url, headers=headers).text
    sel = Selector(text=html)
    # 获取商品的名称
    name = sel.xpath("//div[@class='sku-name']/text()").extract()
    # 获取商品的价格
    price_url = "https://p.3.cn/prices/mgets?type=1&skuIds=J_{}&source=item-pc".format(good_id)
    price_text = requests.get(price_url).text.strip()
    price_list = json.loads(price_text)
    print(html)
    if price_list:
        price = float(price_list[0]["p"])

    # 获取商品的评价信息
    evaluate_url = "https://club.jd.com/comment/productPageComments.action?productId={}&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1".format(good_id,0)
    evaluate_json = json.loads(requests.get(evaluate_url).text)
    max_page = 0
    max_page = evaluate_json["maxPage"]
    statistics = evaluate_json["hotCommentTagStatistics"]
    summary = evaluate_json["productCommentSummary"]
    evaluates = evaluate_json["comments"]
    pass


if __name__ == "__main__":
    parse_good(100006842459)


0 回复 有任何疑惑可以回复我~
  • 提问者 山楂姑娘 #1
    非常感谢!
    回复 有任何疑惑可以回复我~ 2020-08-03 15:11:12
bobby 2020-07-30 18:08:53

你把完整的代码贴一下 我运行试试  也有可能是遇到反爬了

0 回复 有任何疑惑可以回复我~
  • 提问者 山楂姑娘 #1
    import json
    import requests
    from scrapy import Selector
    
    
    def parse_good(good_id):
        good_url = "https://item.jd.com/{}.html".format(good_id)
        html = requests.get(good_url).text
        sel = Selector(text=html)
    
        # 获取商品的名称
        name = sel.xpath("//div[@class='sku-name']/text()").extract()
    
        # 获取商品的价格
        price_url = "https://p.3.cn/prices/mgets?type=1&skuIds=J_{}&source=item-pc".format(good_id)
        price_text = requests.get(price_url).text.strip()
    
        price_list = json.loads(price_text)
        if price_list:
            price = float(price_list[0]["p"])
    
        # 获取商品的评价信息
        evaluate_url = "https://club.jd.com/comment/productPageComments.action?productId={}&score=0&sortType=5&page={}&pageSize=10&isShadowSku=0&fold=1".format(good_id,0)
        evaluate_json = json.loads(requests.get(evaluate_url).text)
        max_page = 0
        max_page = evaluate_json["maxPage"]
        statistics = evaluate_json["hotCommentTagStatistics"]
        summary = evaluate_json["productCommentSummary"]
        evaluates = evaluate_json["comments"]
    
        pass
    
    
    
    if __name__ == "__main__":
        parse_good(100006842459)
    回复 有任何疑惑可以回复我~ 2020-07-31 11:22:15
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号