请问老师为何我的这段代码得不到书的列表 得出的是空值

来源:2-9 爬取京东网的数据

DC超

2018-12-10

import requests
from lxml import html
def spider(sn):
""“爬取京东的图书数据”""
url = ‘https://search.jd.com/Search?keyword=sn’.format(sn)
#html文档
resp = requests.get(url)
print(resp.encoding)
resp.encoding = 'utf-8’
html_doc = requests.get(url).text

#获取xpath对象
selector = html.fromstring(html_doc)


#找到列表的集合
ul_list = selector.xpath('//div[@id="J_goodsList"]/ul/li')
print(len(ul_list))
#解析对应的内容,标题,价格,购买链接
for li in ul_list:
    #标题
    title = li.xpath('div/div[@class="p-name"]/a/@title')
    print(title)

if name == ‘main’:
spider(‘9787115428028’)
老师我这段代码为啥得不到数据

写回答

1回答

NavCat

2018-12-12

你的代码里面有很多错误啊,应该都执行不起来吧。

  1. 要注意代码中的引号一律使用英文半角的

  2. 要注意代码的缩进要一致,推荐4个空格

  3. 要注意字符串格式化语句的写法

url = 'https://search.jd.com/Search?keyword={0}'.format(sn)

    4.注意入口函数的写法

if __name__ == '__main__':
    spider('9787115428028')

修改后的代码:

import requests
from lxml import html


def spider(sn):
    """爬取京东的图书数据"""
    url = 'https://search.jd.com/Search?keyword={0}'.format(sn)
    #html文档
    resp = requests.get(url)
    print(resp.encoding)
    resp.encoding = 'utf8'
    # html_doc = requests.get(url).text
    html_doc = resp.text

    #获取xpath对象
    selector = html.fromstring(html_doc)


    #找到列表的集合
    ul_list = selector.xpath('//div[@id="J_goodsList"]/ul/li')
    print(len(ul_list))
    #解析对应的内容,标题,价格,购买链接
    for li in ul_list:
        #标题
        title = li.xpath('div/div[@class="p-name"]/a/@title')
        print(title)


if __name__ == '__main__':
    spider('9787115428028')


0
2
NavCat
回复
rannrann
resp = requests.get(url, headers={ 'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.26 Safari/537.36 Core/1.63.6776.400 QQBrowser/10.3.2601.400', }) 在请求中添加请求头,试试
2018-12-27
共2条回复

手把手教你把Python应用到实际开发 不再空谈语法

学会项目开发思路,掌握Python高阶用法。

1341 学习 · 244 问题

查看课程