首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用python网络爬虫模拟cookie

用python网络爬虫模拟cookie
EN

Stack Overflow用户
提问于 2014-09-16 07:22:53
回答 1查看 2.6K关注 0票数 0

这件事我需要帮助。我正在尝试使用‘请求’库和BeautifulSoup4库来制作一个web爬虫,但是为了成功地实现这个目的,我必须访问一个链接来激活特定的cookie,这样我就可以搜索该查询的内容。

代码语言:javascript
运行
复制
import requests
from bs4 import BeautifulSoup

def web_spider(max_pages, query):
    page = 1
    while page <= max_pages:
        url = r'http://website.com/search/index?page=' + str(page) + '&q=' + query
        source_code = requests.get(url)
        plain_text = source_code.text
        soup = BeautifulSoup(plain_text)
        for link in soup.finaAll('a', {'class': 'comments_link'}):
            href = 'http://website.com/' + link.get('href')
            print(href)
        page += 1

问题在于某些查询,除非某个cookie设置由url触发,否则由于未启用正确的cookie,它将不会显示任何内容。根据我的代码的当前功能,对我来说最好的行动方针是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-16 07:24:06

使用 object,cookies将自动处理:

代码语言:javascript
运行
复制
session = requests.Session()

def web_spider(max_pages, query):
    page = 1
    while page <= max_pages:
        url = 'http://website.com/search/index'
        params = {'page': page, 'q': query}
        source_code = session.get(url, params=params)
        plain_text = source_code.content
        soup = BeautifulSoup(plain_text)
        for link in soup.select('a.comments_link[href]'):
            href = 'http://website.com/' + link['href']
            print(href)
        page += 1

全局session对象现在跟踪所有cookies。

我还修改了您的代码以使用params参数来进行requests句柄编码,您应该在解析response.content时使用response.content而不是response.text,以确保BeautifulSoup检测到正确的编码。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25862859

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档