zhihu-api icon indicating copy to clipboard operation
zhihu-api copied to clipboard

调用response = self._session.get(url),获取的网页内容,和浏览器获取的不一样。

Open 6xian opened this issue 7 years ago • 2 comments

我想定义一个类,用来实现获取指定用户的“提问”列表。 比如,获取用户heikehuawuya所有提问的标题。 url = https://www.zhihu.com/people/heikehuawuya/asks

我的代码都是依托zhihu-api框架,自己的代码就是asks_list()函数。 调用response = self._session.get(url)时,获取的网页内容,和浏览器获取的不一样。 调试很久,找不出原因,请大家帮忙! 代码如下。

class Userasks(Model): def init(self, slug=None, url=None): slug = slug if slug is not None else self._extract_slug(url) if not slug: raise ZhihuError("没有指定用户的的slug或者url") self.slug = slug super(Userasks, self).init()

@staticmethod
def _extract_id(url):
    """
    从url中提取目标id
    :param url: 
    :return: 
    """
    pattern = re.compile("https://www.zhihu.com/people/(\w+).*?/")
    match = pattern.search(url)
    return match.group(1) if match else None

def asks_list(self, **kwargs):
    question_list = []
    url = URL.user_asks(self.slug)
    response = self._session.get(url)
    soup = BeautifulSoup(response.content, "html.parser")
    tag_list = soup.find_all("div", "ContentItem")
    for name in tag_list.find_all("a"):
        question_list.append(name.get_text())

    return question_list

`

6xian avatar May 01 '17 17:05 6xian

我更改了 User-Agent:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36

获取的response.content,和浏览器的一样了。

6xian avatar May 01 '17 22:05 6xian

ok

lzjun567 avatar May 02 '17 01:05 lzjun567